2011-09-12 46 views
65

Tôi cần kiểm tra xem tệp xml có tồn tại trong thư mục hay không.Cách kiểm tra xem tệp có tồn tại trong một thư mục không?

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

Đây có phải là cách hay nhất để kiểm tra tệp tồn tại trong thư mục.

Tôi cần kiểm tra chỉ một tệp xml có mặt là

+2

Bạn đang tìm kiếm tất cả các file xml hoặc một trong các với tên cụ thể? –

+0

có thể trùng lặp của [Làm thế nào để nhanh chóng kiểm tra xem thư mục trống (.NET)?] (Http://stackoverflow.com/questions/755574/how-to-quickly-check-if-folder-is-empty-net) –

+5

Những gì bạn cần chỉ là 'Directory.EnumerateFileSystemEntries (ProcessingDirectory," * .xml "). Any()' và đó là nhanh nhất bạn có thể nhận được. –

Trả lời

118

Đây là cách để xem liệu có bất kỳ tệp XML nào tồn tại trong thư mục đó hay không.

Để kiểm tra các tệp cụ thể, hãy sử dụng File.Exists(path), thao tác này sẽ trả về một tệp phân tách boolean cho biết tệp tại path tồn tại.

+3

Bạn cũng có thể sử dụng thuộc tính FileInfo.Exists – VMAtm

+7

Noe rằng câu trả lời này trả về false nếu người dùng không có quyền đọc tệp. Vì vậy, nó không chỉ kiểm tra nếu tập tin tồn tại trong một thư mục. Bạn có thể muốn sử dụng DirectoryInfo.GetFiles() và liệt kê kết quả. – ogborstad

26

Sử dụng FileInfo.Exists tài sản:

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

hoặc File.Exists Phương pháp:

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

Các lớp DirectoryInfo và FileInfo thật tuyệt vời. Chúng cung cấp rất nhiều phương thức để xử lý các cấu trúc hệ thống tệp này, hiển thị thông tin trong các thuộc tính hữu ích khi liên kết với giao diện người dùng và có thể tuần tự hóa, vì vậy bạn có thể sử dụng chúng trong cấu hình. – Will

+0

Bất kỳ lý do nào cho downvote? – VMAtm

20

Để kiểm tra file có tồn tại hay không bạn có thể sử dụng

System.IO.File.Exists(path) 
7

Bằng cách này chúng ta có thể kiểm tra một hiện trong một thư mục cụ thể:

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

Vì không ai biết làm thế nào để kiểm tra nếu tập tin tồn tại VÀ có được thư mục hiện hành thực thi là trong (Working Directory):

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

Các @"\YourFile.txt" không trường hợp nhạy cảm, có nghĩa là những thứ như thế @"\YoUrFiLe.txt"@"\YourFile.TXT" hoặc @"\yOuRfILE.tXt" được diễn giải giống nhau.

2

Nó có thể được cải thiện như vậy:

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

Hoặc:

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

Điều này đã được trả lời, 5 năm trước (với một câu trả lời được chấp thuận rất cao, được chấp nhận). Và những gì bạn đã viết trông giống như C++, chứ không phải C#. –

0

này đã giúp tôi:

bool fileExists = (System.IO.File.Exists(filePath) ? true : false); 
Các vấn đề liên quan