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


2
Szukasz wszystkich plików xml lub tego o określonej nazwie?
Piotr Auguscik


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.


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

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)

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

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.


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

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

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

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;
             }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.