Jak sprawdzić, czy plik istnieje w folderze?

112

Muszę sprawdzić, czy w folderze istnieje plik xml.

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

Czy to najlepszy sposób sprawdzenia, czy plik istnieje w folderze.

Muszę sprawdzić, czy obecny jest tylko plik xml

user386258
źródło
2
Szukasz wszystkich plików xml lub tego o określonej nazwie?
Piotr Auguscik
możliwy duplikat Jak szybko sprawdzić, czy folder jest pusty (.NET)?
Shadow Wizard is Ear For You
5
Potrzebujesz tylko Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any()i to najszybciej, jak możesz.
Shadow Wizard is Ear For You

Odpowiedzi:

197

To jest sposób, aby sprawdzić, czy w tym folderze istnieją jakiekolwiek pliki XML, tak.

Aby sprawdzić użycie określonych plików File.Exists(path), co zwróci wartość logiczną wskazującą, czy plik pathistnieje.

CodeCaster
źródło
4
Możesz również użyć właściwości FileInfo.Exists
VMAtm
10
Noe, ta odpowiedź zwraca false, jeśli użytkownik nie ma uprawnień do odczytu pliku. Więc robi więcej niż tylko sprawdzanie, czy plik istnieje w folderze. Możesz chcieć użyć DirectoryInfo.GetFiles () i wyliczyć wynik.
ogborstad
35

Użyj FileInfo.Existswłaściwości:

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

lub File.Existsmetoda:

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
VMAtm
źródło
5
Klasy DirectoryInfo i FileInfo są niesamowite. Oferują wiele metod radzenia sobie z tymi konstrukcjami systemu plików, ujawniają informacje we właściwościach, które są przydatne podczas tworzenia powiązania z interfejsem użytkownika, i można je serializować, dzięki czemu można ich używać w konfiguracjach.
29

Aby sprawdzić, czy plik istnieje, czy nie, możesz użyć

System.IO.File.Exists(path)
62071072SP
źródło
8

W ten sposób możemy sprawdzić istniejący plik w określonym folderze:

 string curFile = @"c:\temp\test.txt";  //Your path
 Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
Himansz
źródło
8

Ponieważ nikt nie powiedział, jak sprawdzić, czy plik istnieje ORAZ pobrać bieżący folder, plik wykonywalny znajduje się w (Katalog roboczy) :

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

Wielkość @"\YourFile.txt"liter nie jest rozróżniana, co oznacza, że ​​rzeczy takie jak @"\YoUrFiLe.txt"i @"\YourFile.TXT"lub @"\yOuRfILE.tXt"są interpretowane tak samo.

Bennett Yeo
źródło
3

Można to ulepszyć w następujący sposób:

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

Alternatywnie:

log.Info(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count + " file(s) present");
WonderWorker
źródło
1
if (File.Exists(localUploadDirectory + "/" + fileName))
{                        
    `Your code here`
}
Bhavin
źródło
2
Chociaż ten kod może (ale nie musi) rozwiązać problem, dobra odpowiedź zawsze wymaga wyjaśnienia, co robi ten kod. Zwróć też uwagę, że twoja odpowiedź nie wydaje się dodawać niczego nowego. Powinieneś również odpowiednio sformatować przykładowy kod i wyjaśnić, co to localUploadDirectoryjest lub dlaczego Twoja odpowiedź w ogóle do niego odnosi się.
BDL
0

Pomogło mi to:

bool fileExists = (System.IO.File.Exists(filePath) ? true : false);
Adrita Sharma
źródło
4
(System.IO.File.Exists(filePath) ? true : false);jest zbędny System.IO.File.Exists(filePath);, wystarczy.
Naveen Niraula
2
Właściwie jak kod Adrity, ponieważ pokazuje jasno, jaka powinna być zmienna, jest również doskonałym przykładem zastosowania logiki w programach studenckich. Zamierzam włączyć to do lekcji. Czasami konieczny usprawniony kod ma również największy narzut związany z konserwacją i debugowaniem
ScaryMinds
0

To działało dla mnie.

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;
             }
moc radhason
źródło