Comment vérifier si un fichier existe dans un dossier?

112

J'ai besoin de vérifier si un fichier xml existe dans le dossier.

DirectoryInfo di = new DirectoryInfo(ProcessingDirectory);
FileInfo[] TXTFiles = di.GetFiles("*.xml");
if (TXTFiles.Length == 0)
{
    log.Info("no files present")
}

Est-ce la meilleure façon de vérifier qu'un fichier existe dans le dossier.

Je dois vérifier qu'un seul fichier xml est présent

user386258
la source
2
Cherchez-vous tous les fichiers xml ou celui avec un nom spécifique?
Piotr Auguscik le
duplication possible de Comment vérifier rapidement si le dossier est vide (.NET)?
Shadow Wizard est une oreille pour vous le
5
Ce dont vous avez besoin est juste Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any()et c'est le plus rapide que vous puissiez obtenir.
Shadow Wizard est une oreille pour vous le

Réponses:

198

C'est un moyen de voir si des fichiers XML existent dans ce dossier, oui.

Pour vérifier des fichiers spécifiques, utilisez File.Exists(path), qui retournera un booléen indiquant si le fichier pathexiste.

CodeCaster
la source
4
Vous pouvez également utiliser la propriété FileInfo.Exists
VMAtm
10
Non, cette réponse renvoie false si l'utilisateur n'a pas l'autorisation de lire le fichier. Il fait donc plus que simplement vérifier si le fichier existe dans un dossier. Vous souhaiterez peut-être utiliser DirectoryInfo.GetFiles () et énumérer le résultat.
ogborstad
35

Utiliser la FileInfo.Existspropriété:

DirectoryInfo di = new DirectoryInfo(ProcessingDirectory);
FileInfo[] TXTFiles = di.GetFiles("*.xml");
if (TXTFiles.Length == 0)
{
    log.Info("no files present")
}
foreach (var fi in TXTFiles)
    log.Info(fi.Exists);

ou File.Existsméthode:

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
VMAtm
la source
5
Les classes DirectoryInfo et FileInfo sont géniales. Ils offrent de nombreuses méthodes pour gérer ces constructions de système de fichiers, exposent des informations dans des propriétés utiles lors de la liaison à l'interface utilisateur et sont sérialisables, vous pouvez donc les utiliser dans les configurations.
29

Pour vérifier que le fichier existe ou non, vous pouvez utiliser

System.IO.File.Exists(path)
62071072SP
la source
8

De cette façon, nous pouvons rechercher un fichier existant dans un dossier particulier:

 string curFile = @"c:\temp\test.txt";  //Your path
 Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
Himansz
la source
8

Puisque personne n'a dit comment vérifier si le fichier existe ET obtenir le dossier actuel dans lequel se trouve l'exécutable (répertoire de travail) :

if (File.Exists(Directory.GetCurrentDirectory() + @"\YourFile.txt")) {
                //do stuff
}

Le @"\YourFile.txt"n'est pas sensible à la casse, cela signifie que des trucs comme @"\YoUrFiLe.txt"et @"\YourFile.TXT"ou @"\yOuRfILE.tXt"sont interprétés de la même manière.

Bennett Yeo
la source
3

Il peut être amélioré comme ceci:

if(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count == 0)
    log.Info("no files present")

Alternativement:

log.Info(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count + " file(s) present");
WonderWorker
la source
1
if (File.Exists(localUploadDirectory + "/" + fileName))
{                        
    `Your code here`
}
Bhavin
la source
2
Bien que ce code puisse (ou non) résoudre le problème, une bonne réponse nécessite toujours une explication sur ce que fait ce code. Notez également que votre réponse ne semble rien ajouter de nouveau. Vous devez également formater votre échantillon de code de manière appropriée et expliquer ce que localUploadDirectoryc'est ou pourquoi votre réponse y fait même référence.
BDL
0

Cela m'a aidé:

bool fileExists = (System.IO.File.Exists(filePath) ? true : false);
Adrita Sharma
la source
4
(System.IO.File.Exists(filePath) ? true : false);est redondant System.IO.File.Exists(filePath);suffira.
Naveen Niraula
2
En fait, comme le code d'Adrita, car il montre clairement ce que la variable doit contenir, c'est aussi un excellent exemple de la façon d'appliquer la logique aux programmes étudiants. Je vais incorporer cela dans une leçon. Parfois, le code simplifié a également la plus grande surcharge en matière de maintenance et de débogage
ScaryMinds
0

Cela m'a réveillé.

file_browse_path=C:\Users\Gunjan\Desktop\New folder\100x25Barcode.prn
  String path = @"" + file_browse_path.Text;

  if (!File.Exists(path))
             {
      MessageBox.Show("File not exits. Please enter valid path for the file.");
                return;
             }
puissance radhason
la source