ระบุเส้นทางโฟลเดอร์ (เช่นC:\Random Folder
) ฉันจะค้นหาไฟล์ในนั้นที่มีนามสกุลที่แน่นอนได้txt
อย่างไร ฉันคิดว่าฉันจะต้องค้นหา*.txt
ในไดเรกทอรี แต่ฉันไม่แน่ใจว่าฉันควรจะเริ่มการค้นหานี้อย่างไรตั้งแต่แรก
ระบุเส้นทางโฟลเดอร์ (เช่นC:\Random Folder
) ฉันจะค้นหาไฟล์ในนั้นที่มีนามสกุลที่แน่นอนได้txt
อย่างไร ฉันคิดว่าฉันจะต้องค้นหา*.txt
ในไดเรกทอรี แต่ฉันไม่แน่ใจว่าฉันควรจะเริ่มการค้นหานี้อย่างไรตั้งแต่แรก
คำตอบ:
ดูที่ชั้นเรียนและวิธีการแบบคงที่System.IO.Directory
GetFiles
มีโอเวอร์โหลดที่ยอมรับเส้นทางและรูปแบบการค้นหา ตัวอย่าง:
string[] files = System.IO.Directory.GetFiles(path, "*.txt");
macos.txt
คุณสามารถใช้คลาสDirectory
Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories)
มันค่อนข้างง่ายจริง คุณสามารถใช้System.IO.Directory
คลาสร่วมกับSystem.IO.Path
. สิ่งที่ชอบ (การใช้ LINQ ทำให้ง่ายยิ่งขึ้น):
var allFilenames = Directory.EnumerateFiles(path).Select(p => Path.GetFileName(p));
// Get all filenames that have a .txt extension, excluding the extension
var candidates = allFilenames.Where(fn => Path.GetExtension(fn) == ".txt")
.Select(fn => Path.GetFileNameWithoutExtension(fn));
เทคนิคนี้มีหลายรูปแบบเช่นกัน คำตอบอื่น ๆ บางคำตอบจะง่ายกว่าหากตัวกรองของคุณง่ายกว่า สิ่งนี้มีข้อดีของการแจงนับที่ล่าช้า (หากมีความสำคัญ) และการกรองที่ยืดหยุ่นมากขึ้นโดยมีค่าใช้จ่ายของรหัสมากขึ้น
วิธีการด้านล่างจะส่งคืนเฉพาะไฟล์ที่มีนามสกุลบางอย่าง (เช่นไฟล์ที่มี. txt แต่ไม่ใช่. txt1)
public static IEnumerable<string> GetFilesByExtension(string directoryPath, string extension, SearchOption searchOption)
{
return
Directory.EnumerateFiles(directoryPath, "*" + extension, searchOption)
.Where(x => string.Equals(Path.GetExtension(x), extension, StringComparison.InvariantCultureIgnoreCase));
}
ตามความเข้าใจของฉันสามารถทำได้สองวิธี:
1) คุณสามารถใช้ Directory Class ด้วยเมธอด Getfiles และสำรวจไฟล์ทั้งหมดเพื่อตรวจสอบนามสกุลที่ต้องการของเรา
Directory.GetFiles ("your_folder_path) [i] .Contains (" *. txt ")
2) คุณสามารถใช้ Path Class ด้วย GetExtension Method ซึ่งใช้เส้นทางไฟล์เป็นพารามิเตอร์และตรวจสอบส่วนขยายหากต้องการรับเส้นทางไฟล์เพียงแค่มีเงื่อนไขการวนซ้ำที่จะดึงไฟล์เดียวและส่งคืน filepath ที่สามารถใช้สำหรับการตรวจสอบได้
Path.GetExtension (your_file_path) .Equals (". json")
หมายเหตุ: ตรรกะทั้งสองจะต้องอยู่ในเงื่อนไขการวนซ้ำ
ใช้รหัสนี้เพื่ออ่านไฟล์ที่มีไฟล์นามสกุลทุกประเภท
string[] sDirectoryInfo = Directory.GetFiles(SourcePath, "*.*");