2011-09-12 137 views
65

我需要检查文件夹中是否存在xml文件。如何检查文件夹中是否存在文件?

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

这是检查文件夹中存在的文件的最佳方法。

我需要检查只是一个XML文件存在

+2

您是否在寻找所有XML文件或一个具体名称?的 –

+0

可能重复[如何快速检查,如果文件夹为空(.NET)?(http://stackoverflow.com/questions/755574/how-to-quickly-check-if-folder-is-empty-net) –

+5

你需要的只是'Directory.EnumerateFileSystemEntries(ProcessingDirectory,“* .xml”)。Any()',这是你能得到的最快速度。 –

回答

118

这是一个方法,如果任何XML的文件存在文件夹中,是的。

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

+3

也可以使用FileInfo.Exists属性 – VMAtm

+7

否则,如果用户没有读取文件的权限,则此答案返回false。所以它不仅仅是检查文件是否存在于文件夹中。您可能想要使用DirectoryInfo.GetFiles()并枚举结果。 – ogborstad

26

使用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."); 
+4

DirectoryInfo和FileInfo类很棒。它们提供了许多用于处理这些文件系统结构的方法,公开绑定到UI时有用的属性中的信息,并且是可序列化的,因此您可以在配置中使用它们。 – Will

+0

downvote的任何原因? – VMAtm

20

要检查文件是否存在与否可以用

System.IO.File.Exists(path) 
7

这样我们就可以检查现有文件在特定文件夹中:

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

既然没有人说如何检查文件是否存在,并获得当前文件夹中的可执行文件中(工作目录)

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

@"\YourFile.txt"不区分大小写,这意味着这样的东西@"\YoUrFiLe.txt"@"\YourFile.TXT"@"\yOuRfILE.tXt"被解释为相同。

2

,它可以像这样进行改进:

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"); 
-9
String^ fileName = "C:\\Cal_Connect\\" + (this->cbo_Model_Name->Text) + "\\" + (this->txt_Certificate_No->Text) + "\\CUSTOMER RECORD\\" + "Status" + ".txt"; // สร้าง file CUSTOMER RECORD 
    if (!System::IO::File::Exists(fileName)) /* ถ้าไม่มี file จะสร้าง file ใหม่ (ถ้ามีจะไม่สร้าง file) */  
+4

五年前,这已经得到了回答(具有非常高的优先性,被接受的答案)。你写的东西看起来像C++,而不是c#。 –

0

帮我:

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