วิธีตรวจสอบว่ามีไฟล์อยู่ในโฟลเดอร์หรือไม่?


112

ฉันต้องการตรวจสอบว่ามีไฟล์ 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


5
สิ่งที่คุณต้องการมีเพียงDirectory.EnumerateFileSystemEntries(ProcessingDirectory, "*.xml").Any()และเร็วที่สุดที่คุณจะได้รับ
Shadow Wizard is Ear For You

คำตอบ:


197

นี่เป็นวิธีดูว่ามีไฟล์ XML อยู่ในโฟลเดอร์นั้นหรือไม่

เพื่อตรวจสอบการใช้ไฟล์ที่เฉพาะเจาะจงFile.Exists(path)ซึ่งจะส่งคืนบูลีนที่ระบุว่ามีไฟล์pathอยู่หรือไม่


4
คุณยังสามารถใช้คุณสมบัติ FileInfo.Exists
VMAtm

10
ไม่ว่าคำตอบนี้จะส่งกลับเท็จหากผู้ใช้ไม่มีสิทธิ์อ่านไฟล์ ดังนั้นจึงทำมากกว่าแค่ checkinf ว่าไฟล์มีอยู่ในโฟลเดอร์หรือไม่ คุณอาจต้องการใช้ DirectoryInfo.GetFiles () และระบุผลลัพธ์
ogborstad

35

ใช้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 และสามารถต่ออนุกรมกันได้เพื่อให้คุณสามารถใช้ในการกำหนดค่าได้

29

ในการตรวจสอบไฟล์ที่มีอยู่หรือไม่คุณสามารถใช้

System.IO.File.Exists(path)

8

ด้วยวิธีนี้เราสามารถตรวจสอบไฟล์ที่มีอยู่ในโฟลเดอร์ใดโฟลเดอร์หนึ่งได้:

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

8

เนื่องจากไม่มีใครบอกวิธีตรวจสอบว่ามีไฟล์อยู่หรือไม่และรับโฟลเดอร์ปัจจุบันที่ปฏิบัติการอยู่ใน (Working Directory) :

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

@"\YourFile.txt"ไม่ได้เป็นกรณีที่มีความสำคัญที่หมายถึงสิ่งที่ชอบ@"\YoUrFiLe.txt"และ@"\YourFile.TXT"หรือ@"\yOuRfILE.tXt"ถูกตีความเดียวกัน


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

2
แม้ว่ารหัสนี้อาจ (หรืออาจไม่) แก้ปัญหา แต่คำตอบที่ดีมักจะต้องมีคำอธิบายว่ารหัสนี้ทำอะไร โปรดทราบว่าคำตอบของคุณดูเหมือนจะไม่ได้เพิ่มอะไรใหม่ คุณควรจัดรูปแบบตัวอย่างโค้ดของคุณให้เหมาะสมและอธิบายว่าอะไรlocalUploadDirectoryคืออะไรหรือทำไมคำตอบของคุณถึงได้อ้างถึง
BDL

0

สิ่งนี้ช่วยฉัน:

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

4
(System.IO.File.Exists(filePath) ? true : false);ซ้ำซ้อนSystem.IO.File.Exists(filePath);ก็เพียงพอแล้ว
Naveen Niraula

2
จริงๆแล้วก็เหมือนกับโค้ดของ Adrita เนื่องจากมันทำให้เห็นได้ชัดว่าตัวแปรควรเก็บอะไรไว้และยังเป็นตัวอย่างที่ดีในการใช้ตรรกะสำหรับโปรแกรมนักเรียน จะรวมสิ่งนั้นไว้ในบทเรียน บางครั้งโค้ดที่ปรับปรุงแล้วต้องมีค่าใช้จ่ายที่มากที่สุดในการบำรุงรักษาและการดีบัก
ScaryMinds

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;
             }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.