[System.Runtime.InteropServices.DllImport("Shlwapi.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
private static extern int StrCmpLogicalW(string psz1, string psz2);
DirectoryInfo Dir = new DirectoryInfo(str);
List<FileInfo> files = new List<FileInfo>();
files.AddRange(Dir.GetFiles("*." + suffix));
files.Sort(CompareFilename);
//排序算法
public int CompareFilename(FileInfo obj1, FileInfo obj2)
{
int res = 0;
if ((obj1 == null) && (obj2 == null))
{
return 0;
}
else if ((obj1 != null) && (obj2 == null))
{
return 1;
}
else if ((obj1 == null) && (obj2 != null))
{
return -1;
}
if (obj1.DirectoryName == obj2.DirectoryName)
{
res = StrCmpLogicalW(obj1.Name,obj2.Name);
}else
{
res = obj1.DirectoryName.CompareTo(obj2.DirectoryName);
}
}
本文介绍了一种使用C#实现的文件名排序算法,通过自定义比较器并利用StrCmpLogicalW函数,对指定目录下具有特定后缀的文件进行智能排序。此方法考虑了文件的目录名和文件名,确保了排序的逻辑正确性。
943

被折叠的 条评论
为什么被折叠?



