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

user386258
quelle
2
Suchen Sie nach allen XML-Dateien oder nach Dateien mit einem bestimmten Namen?
Piotr Auguscik
mögliches Duplikat von Wie kann man schnell überprüfen, ob der Ordner leer ist (.NET)?
Schatten-Assistent ist Ohr für Sie
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.

CodeCaster
quelle
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.");
VMAtm
quelle
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)
62071072SP
quelle
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.");
Himansz
quelle
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.

Bennett Yeo
quelle
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");
WonderWorker
quelle
1
if (File.Exists(localUploadDirectory + "/" + fileName))
{                        
    `Your code here`
}
Bhavin
quelle
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);
Adrita Sharma
quelle
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;
             }
Radhason Macht
quelle