จะทราบได้อย่างไรว่ามีไฟล์อยู่ใน C # / .NET


186

ฉันต้องการทดสอบสตริงที่มีเส้นทางไปยังไฟล์เพื่อการมีอยู่ของไฟล์นั้น (เช่นการ-eทดสอบใน Perl หรือos.path.exists()ใน Python) ใน C #

คำตอบ:


303

ใช้:

File.Exists(path)

MSDN: http://msdn.microsoft.com/en-us/library/system.io.file.exists.aspx

แก้ไข: ใน System.IO


14
File.Exists (เส้นทาง) ส่งคืนค่าเท็จแม้ว่าไฟล์ที่มีอยู่ แต่ผู้เรียกไม่มีสิทธิ์ในการอ่าน มีวิธีอื่นในการจัดการสถานการณ์เช่นนี้และตรวจสอบว่ามีไฟล์อยู่หรือไม่แม้ว่าผู้โทรจะไม่สามารถอ่านได้
ADTC

3
@ADTC: จากมุมมองด้านความปลอดภัยมันเป็นเรื่องปกติที่มันทำงานอย่างนั้นจากมุมมองของนักพัฒนามันอาจทำให้สิ่งต่าง ๆ มีความซับซ้อนมากขึ้น คุณได้รับการยกเว้นในกรณีนั้นหรือไม่หากคุณพยายามสร้างไฟล์
user276648

2
@ADTC เพิ่งสะดุดและคิดว่าฉันอาจพูดถึงไดเรกทอรีกล่อง สามารถตั้งค่าที่คุณสร้างหรือเขียนสิทธิ์ แต่ไม่มีสิทธิ์อ่าน ไม่ใช่ว่ามันเกี่ยวข้องกับคำถามนี้โดยตรงเพียง แต่พวกเขาจะไม่แปลกอย่างที่ใคร ๆ คิด
Ukko

1
หมายเหตุด้านข้าง: File.Exists ส่งคืนค่าเท็จในไดรฟ์สตรีมไฟล์ Google G: หากการกำหนดเส้นทางไม่ตรงกับสิ่งที่เกิดขึ้นจริงใน G: โดยปกติแล้วตัวกล่องไดรฟ์ทางกายภาพไม่สำคัญดังนั้นฉันจึงสงสัยว่ามีบางสิ่งผิดปกติกับวิธีการที่มีอยู่หรือไม่
CTZStef

1
@CTZStef นั่นคือสิ่งที่แปลกประหลาดของไดรฟ์เสมือนของ Google มากกว่าวิธีการกรอบ
Eugene Mayevski 'ติดต่อกลับ



4

ให้เส้นทางแบบเต็มเป็นอินพุต หลีกเลี่ยงเส้นทางที่สัมพันธ์กัน

 return File.Exists(FinalPath);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.