ฉันมีปัญหาเดียวกันและไม่พบวิธีแก้ไขปัญหาที่ถูกต้องดังนั้นฉันจึงเขียนฟังก์ชันชื่อ GetFiles:
/// <summary>
/// Get all files with a specific extension
/// </summary>
/// <param name="extensionsToCompare">string list of all the extensions</param>
/// <param name="Location">string of the location</param>
/// <returns>array of all the files with the specific extensions</returns>
public string[] GetFiles(List<string> extensionsToCompare, string Location)
{
List<string> files = new List<string>();
foreach (string file in Directory.GetFiles(Location))
{
if (extensionsToCompare.Contains(file.Substring(file.IndexOf('.')+1).ToLower())) files.Add(file);
}
files.Sort();
return files.ToArray();
}
ฟังก์ชั่นนี้จะเรียกDirectory.Getfiles()
เพียงครั้งเดียว
ตัวอย่างเช่นเรียกใช้ฟังก์ชันดังนี้:
string[] images = GetFiles(new List<string>{"jpg", "png", "gif"}, "imageFolder");
แก้ไข: หากต้องการรับไฟล์หนึ่งไฟล์ที่มีหลายนามสกุลให้ใช้ไฟล์นี้:
/// <summary>
/// Get the file with a specific name and extension
/// </summary>
/// <param name="filename">the name of the file to find</param>
/// <param name="extensionsToCompare">string list of all the extensions</param>
/// <param name="Location">string of the location</param>
/// <returns>file with the requested filename</returns>
public string GetFile( string filename, List<string> extensionsToCompare, string Location)
{
foreach (string file in Directory.GetFiles(Location))
{
if (extensionsToCompare.Contains(file.Substring(file.IndexOf('.') + 1).ToLower()) &&& file.Substring(Location.Length + 1, (file.IndexOf('.') - (Location.Length + 1))).ToLower() == filename)
return file;
}
return "";
}
ตัวอย่างเช่นเรียกใช้ฟังก์ชันดังนี้:
string image = GetFile("imagename", new List<string>{"jpg", "png", "gif"}, "imageFolder");