私はたぶん約500時間を費やしました。これを読んで、MSDNのドキュメントを読むと、私は望む方法で動作することを拒否します。名前でFileSystemInfo []をソート
私はこのようなファイルの名前で並べ替えることができます。
01.png
02.png
03.png
04.png
すなわちをすべて同じファイル長。
ファイルの長さが長いファイルが2番目にありますが、すべてが地獄になります。シーケンスの例
:
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へ? –
これを試してみてくださいhttp://stackoverflow.com/questions/1601834/c-implementation-of-or-alternative-to-strcmplogicalw-in-shlwapi-dll、 'StrCmpLogicalW'はソートの「魔法」を行うWindows APIですファイル名を「論理的」な形で表します。 – xanatos