Как проверить, существует ли файл в папке?


112

Мне нужно проверить, существует ли в папке файл xml.

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

Это лучший способ проверить, существует ли файл в папке.

Мне нужно проверить наличие только xml-файла


2
Вы ищете все файлы xml или файл с определенным именем?
Петр Августик,


5
Вам нужно просто, Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any()и это самое быстрое, что вы можете получить.
Shadow Wizard is Ear For You

Ответы:


197

Это способ узнать, существуют ли какие-либо XML-файлы в этой папке, да.

Чтобы проверить использование определенных файлов File.Exists(path), будет возвращено логическое значение, указывающее, существует ли файл path.


4
Вы также можете использовать свойство FileInfo.Exists
VMAtm,

10
Нет, этот ответ возвращает false, если у пользователя нет разрешения на чтение файла. Таким образом, он делает больше, чем просто проверяет наличие файла в папке. Вы можете использовать DirectoryInfo.GetFiles () и перечислить результат.
ogborstad

35

Использовать FileInfo.Existsсвойство:

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

или File.Existsметод:

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

5
Классы DirectoryInfo и FileInfo великолепны. Они предлагают множество методов для работы с этими конструкциями файловой системы, предоставляют информацию в свойствах, которые полезны при привязке к пользовательскому интерфейсу, и сериализуемы, поэтому вы можете использовать их в конфигурациях.

29

Чтобы проверить, существует ли файл, вы можете использовать

System.IO.File.Exists(path)

8

Таким образом, мы можем проверить наличие файла в определенной папке:

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

8

Поскольку никто не сказал, как проверить, существует ли файл, И получить текущую папку, в которой находится исполняемый файл (рабочий каталог) :

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

Регистр @"\YourFile.txt"не учитывается, это означает, что такие вещи, как @"\YoUrFiLe.txt"и @"\YourFile.TXT"или @"\yOuRfILE.tXt"интерпретируются одинаково.


3

Его можно улучшить так:

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

В качестве альтернативы:

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

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

2
Хотя этот код может (а может и не решить) проблему, хороший ответ всегда требует объяснения того, что делает этот код. Также обратите внимание, что ваш ответ, похоже, не добавляет ничего нового. Вы также должны соответствующим образом отформатировать образец кода и объяснить, что это localUploadDirectoryтакое и почему ваш ответ вообще относится к нему.
BDL

0

Мне это помогло:

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

4
(System.IO.File.Exists(filePath) ? true : false);избыточно System.IO.File.Exists(filePath);будет достаточно.
Naveen Niraula

2
На самом деле, как и код Адриты, поскольку он делает очевидным, что должна содержать переменная, также является отличным примером того, как применять логику к студенческим программам. Собираюсь включить это в урок. Иногда обязательный оптимизированный код также
связан

0

Меня это разбудило.

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;
             }
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.