Làm thế nào để kiểm tra xem một tệp có tồn tại trong một thư mục hay không?


112

Tôi cần kiểm tra xem tệp xml có tồn tại trong thư mục hay 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 tốt nhất để kiểm tra tệp tồn tại trong thư mục hay không.

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


2
Bạn đang tìm kiếm tất cả các tệp xml hoặc tệp có tên cụ thể?
Piotr Auguscik


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.
Shadow Wizard là Ear For You,

Câu trả lời:


198

Đây là một 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 việc sử dụng các tệp cụ thể File.Exists(path), thao tác này sẽ trả về boolean cho biết khi tệp pathtồn tại.


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

10
Có nghĩa là 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ỉ checkinf nếu tệp 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

35

Sử dụng FileInfo.ExistsThuộc tính:

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.ExistsPhương pháp:

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

5
Các lớp DirectoryInfo và FileInfo thật tuyệt vời. Họ cung cấp nhiều phương pháp để 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ác cấu hình.

29

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

System.IO.File.Exists(path)

8

Bằng cách này, chúng tôi có thể kiểm tra tệp hiện có 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.");

8

Vì không ai nói cách kiểm tra xem tệp có tồn tại hay không VÀ lấy thư mục hiện tại mà tệp thực thi có trong (Thư mục làm việc) :

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

Các @"\YourFile.txt"không phải là trường hợp nhạy cảm, điều đó có nghĩa thứ như thế @"\YoUrFiLe.txt"@"\YourFile.TXT"hay @"\yOuRfILE.tXt"được hiểu như nhau.


3

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

Ngoài ra:

log.Info(Directory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").ToList<string>().Count + " file(s) present");

1
if (File.Exists(localUploadDirectory + "/" + fileName))
{                        
    `Your code here`
}

2
Mặc dù mã này có thể (hoặc có thể không) giải quyết được vấn đề, nhưng một câu trả lời hay luôn yêu cầu giải thích về chức năng của mã này. Cũng lưu ý rằng câu trả lời của bạn dường như không thêm bất cứ điều gì mới. Bạn cũng nên định dạng mẫu mã của mình một cách thích hợp và giải thích những gìlocalUploadDirectory câu trả lời của bạn là hoặc tại sao lại đề cập đến nó.
BDL

0

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

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

4
(System.IO.File.Exists(filePath) ? true : false);là dư thừa System.IO.File.Exists(filePath);sẽ đủ.
Naveen Niraula,

2
Trên thực tế, giống như mã của Adrita, vì nó cho thấy rõ biến nên giữ cái gì, cũng là một ví dụ tuyệt vời về cách áp dụng logic cho các chương trình sinh viên. Sẽ kết hợp điều đó trong một bài học. Đôi khi phải sắp xếp hợp lý mã cũng có chi phí lớn nhất trong việc duy trì và gỡ rối
ScaryMinds

0

Điều này đã gây ra cho tôi.

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;
             }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.