Directory.GetFiles (LocalFilePath, searchPattern);Lọc tên tệp: nhận * .abc không có * .abcd hoặc * .abcde, v.v.
MSDN Ghi chú:
Khi sử dụng các nhân vật dấu ký tự đại diện trong một searchPattern, chẳng hạn như ".txt", hành vi phù hợp khi mở rộng là đúng ba ký tự khác với khi phần mở rộng là hơn hoặc dài hơn ba ký tự. Một searchPattern với một phần mở rộng tệp chính xác là ba ký tự trả về các tệp có phần mở rộng gồm ba ký tự trở lên, trong đó ba ký tự đầu tiên khớp với đuôi tệp được chỉ định trong searchPattern. Một đối tượng tìm kiếm có phần mở rộng tệp gồm một, hai hoặc nhiều hơn ba ký tự sẽ chỉ trả về các tệp có phần mở rộng chính xác với độ dài phù hợp với đuôi tệp được chỉ định trong searchPattern. Khi sử dụng ký tự đại diện dấu chấm hỏi, phương thức này chỉ trả về các tệp phù hợp với phần mở rộng tệp được chỉ định. Ví dụ: cho hai tệp, "file1.txt" và "file1.txtother", trong một thư mục, mẫu tìm kiếm của "tệp? .txt" chỉ trả lại tệp đầu tiên, trong khi mẫu tìm kiếm của "tệp .txt" trả về cả hai tập tin.
Danh sách sau đây cho thấy các hành vi có độ dài khác nhau cho các tham số searchPattern:
*.abc
lợi nhuận file có một phần mở rộng của.abc
,.abcd
,.abcde
,.abcdef
, và vân vân.*.abcd
chỉ trả lại các tệp có phần mở rộng là.abcd
.*.abcde
chỉ trả về các tệp có phần mở rộng là.abcde
.*.abcdef
chỉ trả về các tệp có phần mở rộng là.abcdef
.
Với searchPattern
tham số thiết lập để *.abc
, làm thế nào tôi có thể trả hồ sơ có một phần mở rộng của .abc
, không .abcd
, .abcde
và vân vân?
Có lẽ chức năng này sẽ làm việc:
private bool StriktMatch(string fileExtension, string searchPattern)
{
bool isStriktMatch = false;
string extension = searchPattern.Substring(searchPattern.LastIndexOf('.'));
if (String.IsNullOrEmpty(extension))
{
isStriktMatch = true;
}
else if (extension.IndexOfAny(new char[] { '*', '?' }) != -1)
{
isStriktMatch = true;
}
else if (String.Compare(fileExtension, extension, true) == 0)
{
isStriktMatch = true;
}
else
{
isStriktMatch = false;
}
return isStriktMatch;
}
Chương trình thử nghiệm:
class Program
{
static void Main(string[] args)
{
string[] fileNames = Directory.GetFiles("C:\\document", "*.abc");
ArrayList al = new ArrayList();
for (int i = 0; i < fileNames.Length; i++)
{
FileInfo file = new FileInfo(fileNames[i]);
if (StriktMatch(file.Extension, "*.abc"))
{
al.Add(fileNames[i]);
}
}
fileNames = (String[])al.ToArray(typeof(String));
foreach (string s in fileNames)
{
Console.WriteLine(s);
}
Console.Read();
}
Bất kỳ ai khác tốt hơn giải pháp?
Bạn sẽ có nhiều bối cảnh hơn ... – Eclipse