Wie überprüfe ich, ob eine Datei in einem Ordner vorhanden ist?


112

Ich muss überprüfen, ob eine XML-Datei im Ordner vorhanden ist.

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

Ist dies der beste Weg, um zu überprüfen, ob eine Datei im Ordner vorhanden ist?

Ich muss überprüfen, ob nur eine XML-Datei vorhanden ist


2
Suchen Sie nach allen XML-Dateien oder nach Dateien mit einem bestimmten Namen?
Piotr Auguscik


5
Was Sie brauchen, ist einfach Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any()und das ist das schnellste, das Sie bekommen können.
Schatten-Assistent ist Ohr für Sie

Antworten:


198

Auf diese Weise können Sie feststellen, ob in diesem Ordner XML-Dateien vorhanden sind.

Um nach bestimmten Dateien zu File.Exists(path)suchen, verwenden Sie , wodurch ein Boolescher Wert zurückgegeben wird, der angibt, ob die Datei pathvorhanden ist.


4
Sie können auch die FileInfo.Exists-Eigenschaft verwenden
VMAtm

10
Nein, diese Antwort gibt false zurück, wenn der Benutzer keine Berechtigung zum Lesen der Datei hat. Es geht also nicht nur darum, zu überprüfen, ob die Datei in einem Ordner vorhanden ist. Möglicherweise möchten Sie DirectoryInfo.GetFiles () verwenden und das Ergebnis auflisten.
Ogborstad

35

Die Nutzung der FileInfo.ExistsImmobilie:

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

oder File.ExistsMethode:

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");

5
Die DirectoryInfo- und FileInfo-Klassen sind fantastisch. Sie bieten viele Methoden für den Umgang mit diesen Dateisystemkonstrukten, legen Informationen in Eigenschaften offen, die beim Binden an die Benutzeroberfläche nützlich und serialisierbar sind, sodass Sie sie in Konfigurationen verwenden können.

29

Um zu überprüfen, ob eine Datei vorhanden ist oder nicht, können Sie verwenden

System.IO.File.Exists(path)

8

Auf diese Weise können wir in einem bestimmten Ordner nach einer vorhandenen Datei suchen:

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

8

Da niemand gesagt hat, wie zu überprüfen ist, ob die Datei vorhanden ist UND der aktuelle Ordner abgerufen wird, in dem sich die ausführbare Datei befindet (Arbeitsverzeichnis) :

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

Das unterscheidet @"\YourFile.txt"nicht zwischen Groß- und Kleinschreibung, das heißt, Dinge wie @"\YoUrFiLe.txt"und @"\YourFile.TXT"oder @"\yOuRfILE.tXt"werden gleich interpretiert.


3

Es kann folgendermaßen verbessert werden:

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

Alternative:

log.Info(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count + " file(s) present");

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

2
Obwohl dieser Code das Problem möglicherweise löst (oder auch nicht), erfordert eine gute Antwort immer eine Erklärung, was dieser Code bewirkt. Beachten Sie auch, dass Ihre Antwort nichts Neues hinzuzufügen scheint. Sie sollten Ihr Codebeispiel auch entsprechend formatieren und erklären, was localUploadDirectoryist oder warum Ihre Antwort überhaupt darauf verweist.
BDL

0

Das hat mir geholfen:

bool fileExists = (System.IO.File.Exists(filePath) ? true : false);

4
(System.IO.File.Exists(filePath) ? true : false);ist redundant System.IO.File.Exists(filePath);wird ausreichen.
Naveen Niraula

2
Eigentlich wie Adritas Code, da er klar macht, was die Variable enthalten sollte, auch ein hervorragendes Beispiel für die Anwendung von Logik für Studentenprogramme. Ich werde das in eine Lektion aufnehmen. Manchmal hat der optimierte Code auch den größten Aufwand bei Wartung und Debugging
ScaryMinds

0

Das hat mich geweckt.

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;
             }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.