我可能花了大約500個小時使用谷歌搜索和閱讀MSDN文檔,它仍然拒絕按我想要的方式工作。按名稱排序FileSystemInfo []
我可以通過名稱文件進行排序是這樣的:
01.png
02.png
03.png
04.png
即所有相同的文件長度。
第二個是有一個文件長度較長的文件一切都會到地獄。
例如順序:
1.png
2.png
3.png
4.png
5.png
10.png
11.png
它讀取:
1.png, 2.png then 10.png, 11.png
我不想這樣。
我的代碼:
DirectoryInfo di = new DirectoryInfo(directoryLoc);
FileSystemInfo[] files = di.GetFileSystemInfos("*." + fileExtension);
Array.Sort<FileSystemInfo>(files, new Comparison<FileSystemInfo>(compareFiles));
foreach (FileInfo fri in files)
{
fri.MoveTo(directoryLoc + "\\" + prefix + "{" + operationNumber.ToString() + "}" + (i - 1).ToString("D10") +
"." + fileExtension);
i--;
x++;
progressPB.Value = (x/fileCount) * 100;
}
// compare by file name
int compareFiles(FileSystemInfo a, FileSystemInfo b)
{
// return a.LastWriteTime.CompareTo(b.LastWriteTime);
return a.Name.CompareTo(b.Name);
}
是否可以在您的方案中更改文件名模式?例如。從1.png到01.png? – 2012-03-13 10:53:46
試試這個http://stackoverflow.com/questions/1601834/c-implementation-of-or-alternative-to-strcmplogicalw-in-shlwapi-dll,'StrCmpLogicalW'是Windows API,它可以完成排序的「魔術」文件名以「邏輯」方式。 – xanatos 2012-03-13 11:00:05