如何检查文件夹中是否存在文件?

121

我需要检查文件夹中是否存在一个XML文件。

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

这是检查文件夹中是否存在文件的最佳方法吗?

我只需要检查是否存在一个xml文件。


2
你是在寻找所有的XML文件还是特定名称的文件? - Piotr Auguscik
可能是[如何快速检查文件夹是否为空(.NET)?]的重复问题(https://dev59.com/lnRA5IYBdhLWcg3w_DHF)。 - Shadow The Spring Wizard
5
您所需要的就是 Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any(),这也是您可以得到的最快速的方法。 - Shadow The Spring Wizard
可能是重复的问题:如何在C#/.NET中查找文件是否存在? - Kromster
8个回答

208

这是一种检查该文件夹中是否存在任何XML文件的方法。

要检查特定文件,请使用File.Exists(path),它将返回一个布尔值,指示位于path位置的文件是否存在。


4
您可以使用 FileInfo.Exists 属性。 - VMAtm
12
请注意,如果用户没有读取文件的权限,此答案将返回 false。因此,它不仅仅是检查文件夹中是否存在文件。您可能希望使用 DirectoryInfo.GetFiles() 方法并枚举结果。 - ogborstad

40

使用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类非常好用。它们提供了许多处理文件系统构建的方法,暴露有用的属性信息以便于UI绑定,并且可序列化,因此您可以在配置中使用它们。 - user1228

34

要检查文件是否存在,您可以使用

System.IO.File.Exists(path)

9

由于没有人说明如何检查文件是否存在并获取可执行文件所在的当前文件夹(工作目录)

if (File.Exists(Directory.GetCurrentDirectory() + @"\YourFile.txt")) {
                //do stuff
}
@"\YourFile.txt" 不区分大小写,这意味着类似 @"\YoUrFiLe.txt"@"\YourFile.TXT"@"\yOuRfILE.tXt" 的内容都被解释为相同的内容。

如果(File.Exists(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + @"YourFile.txt")){ - kkasp

7
这样我们可以检查特定文件夹中是否存在一个文件:
 string curFile = @"c:\temp\test.txt";  //Your path
 Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");

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`
}

4
虽然这段代码可能(或可能不)解决了问题,但一个好的回答总是需要解释一下这段代码的作用。此外,请注意,你的回答似乎没有添加任何新内容。你还应该适当地格式化代码示例,并解释localUploadDirectory是什么,或者为什么你的回答会提到它。 - BDL

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接