2011-09-12 130 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); 
相關問題