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


2
Cherchez-vous tous les fichiers xml ou celui avec un nom spécifique?
Piotr Auguscik 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.


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.");

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)

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.");

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.


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");

1
if (File.Exists(localUploadDirectory + "/" + fileName))
{                        
    `Your code here`
}

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);

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;
             }
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.