【发布时间】:2012-03-13 10:49:38
【问题描述】:
我可能已经花了大约 500 个小时在谷歌上搜索并阅读 MSDN 文档,但它仍然拒绝按我想要的方式工作。
我可以为这样的文件按名称排序:
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?
-
试试这个stackoverflow.com/questions/1601834/…,
StrCmpLogicalW是 Windows API,它以“逻辑”方式对文件名进行排序。
标签: c# .net sorting filesysteminfo