Vérifier si le fichier existe avec Try/Catch
Je suis nouveau sur ce sujet Try/Catch. Dans le code ci-dessous j'ai un test simple pour vérifier si un fichier existe. Dans ma tâche pour mon C# leçon que je doit utiliser Try/Catch, et je ne suis pas sûr de la façon de l'utiliser, dois-je toujours utiliser si l'instruction à l'intérieur de l'essai de la partie ou est-il une meilleure façon de vérifier si un fichier existe à l'intérieur de l'Essayer? Quelle est la différence si le fichier est un simple fichier txt ou un fichier sérialisé?
if (File.Exists("TextFile1.txt"))
{
MessageBox.Show("The file don't exist!", "Problems!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
Le Try/Catch façon je dois utiliser
try
{
code to check if file exist here
}
catch
{
error message here
}
Fichier.Existe jetez pas exception, donc je ne pense pas qu'il y a vraiment besoin d'essayer de l'attraper. Vous pouvez utiliser certaines de meilleur exemple pour try-catch utilisation.
vous voulez probablement pour vérifier si le fichier est manquant, alors afficher la boîte de message. Peut-être essayer if (!Fichier.Il existe)
Si possible, rester à l'écart de try-catch, sauf si vous vous attendez à une exception, et vous savez comment le gérer, ou si vous voulez attraper l'exception de journal et de ne pas laisser finissent par s'écraser votre application.
OT: en Fait, c'est "Le fichier n'existe pas.", toutefois, si cela est indiqué à l'utilisateur que la messagebox implique qu'il est préférable de ne pas utiliser d'abréviations. Par conséquent, il est plus agréable de dire: "Le fichier n'existe pas." Aucune infraction, prévu btw.
Un try catch est des centaines de fois plus cher que juste une instruction if.
vous voulez probablement pour vérifier si le fichier est manquant, alors afficher la boîte de message. Peut-être essayer if (!Fichier.Il existe)
Si possible, rester à l'écart de try-catch, sauf si vous vous attendez à une exception, et vous savez comment le gérer, ou si vous voulez attraper l'exception de journal et de ne pas laisser finissent par s'écraser votre application.
OT: en Fait, c'est "Le fichier n'existe pas.", toutefois, si cela est indiqué à l'utilisateur que la messagebox implique qu'il est préférable de ne pas utiliser d'abréviations. Par conséquent, il est plus agréable de dire: "Le fichier n'existe pas." Aucune infraction, prévu btw.
Un try catch est des centaines de fois plus cher que juste une instruction if.
OriginalL'auteur 3D-kreativ | 2012-07-26
Vous devez vous connecter pour publier un commentaire.
Vous déjà vérifier la présence du fichier dans votre premier sniplet. Il n'est pas besoin, pour ce code à l'intérieur de
try/catch
bloc.OK, mais je dois utiliser Try/Catch ou de l'Aide dans ma tâche lors de l'ouvrir et enregistrer des fichiers. Je suppose que l'enseignant veut que nous pour gérer les situations si le fichier n'existe pas ou l'utilisation n'a pas de permission d'écriture
dans ce code vous déjà vérifier la présence. Peut être vous enseignant des moyens autres: si vous immagine, vous êtes l'écriture de données dans un fichier sur le (dire) lecteur USB. Un gros fichier. Au cours de l'écriture, vous tirez sur le port USB de PC. Cela signifie que, dans le milieu de l'opération d'écriture le fichier n'est plus disponible (il n'existe pas plus), et vous avez à gérer ce genre de problèmes. Si vous voulez vérifier juste sur presenc de fichier, utilisez le Fichier.Existe(..), mais si vous allez écrire quelque chose dans le fichier, utiliser try/catch pour les raisons que j'ai écrit avant.
OriginalL'auteur Tigran
OriginalL'auteur AksharRoop
Si vous voulez vérifier si le fichier existe sans l'aide de
File.Exist
, alors vous pouvez essayer d'ouvrir le fichier dans un bloc try, et ensuite de prendre l'exception FileNotFoundException.Merci pour votre réponse! Quand j'ai essayer ton code j'obtiens une ligne rouge ci-dessous Streamreader, je suppose qu'il doit être un peu plus de code pour déclarer cela?!
Juste à droite, cliquez dessus, puis cliquez sur résoudre, ou sur le dessus comprennent
using System.IO;
Je suis en utilisant string fichier = openFileDialog1.Nom de fichier; Quand je suis en utilisant le menu "fichier", j'obtiens le trou chemin, il est un moyen pour obtenir juste le nom du fichier?
utilisation
var onlyFileName = System.IO.Path.GetFileName(openFileDialog1.FileName);
OriginalL'auteur Habib
Essayez ceci :
Yeap, il peut avoir plusieurs catch, merci ^^
OriginalL'auteur SidAhmed
Utilisation
jet
:Vous avez oublié le point d'exclamation
!
merci!
OriginalL'auteur Ria
Vous utilisez uniquement un try/catch, quand vous avez une erreur inattendue, ou vous "attendent" une erreur d'accéder à une ressource. Cela vous semble un peu confus, mais en votre cause, il n'y a ni.
Si toutefois vous avez ouvert comme flux pour LIRE un fichier sans vérifier si elle existe, qui sera ensuite nécessaire d'avoir un try..catch.
Dans l'ensemble, try..catch doit être appliquée pour la sécurité, et dont le code est complexe/longueur.
OriginalL'auteur Dane Balia
Liés à cette question thread suivant sera intéressant
http://social.msdn.microsoft.com/Forums/en-NZ/winappswithcsharp/thread/1eb71a80-c59c-4146-aeb6-fefd69f4b4bb
Fichier.Existe API a été modifié dans la fenêtre de 8 et de l'explication est:
Approche avec Fichier.Existe n'est pas thread-safe et il a été supprimé à partir de l'API de windows 8. Donc il suffit de prendre FileNotFoundException
OriginalL'auteur Regfor