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

112

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

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

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

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

user386258
источник
2
Вы ищете все файлы xml или файл с определенным именем?
Петр Августик,
возможный дубликат Как быстро проверить, пуста ли папка (.NET)?
Shadow Wizard - Ear For You
5
Вам нужно просто, Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any()и это самое быстрое, что вы можете получить.
Shadow Wizard is Ear For You

Ответы:

197

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

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

CodeCaster
источник
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.");
VMAtm
источник
5
Классы DirectoryInfo и FileInfo великолепны. Они предлагают множество методов для работы с этими конструкциями файловой системы, предоставляют информацию в свойствах, которые полезны при привязке к пользовательскому интерфейсу, и сериализуемы, поэтому вы можете использовать их в конфигурациях.
29

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

System.IO.File.Exists(path)
62071072SP
источник
8

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

 string curFile = @"c:\temp\test.txt";  //Your path
 Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
Himansz
источник
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");
WonderWorker
источник
1
if (File.Exists(localUploadDirectory + "/" + fileName))
{                        
    `Your code here`
}
Bhavin
источник
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;
             }
мощность радазона
источник