System.IO.Directory.GetFiles()返回一个string[].返回值的默认排序顺序是什么?我是按名字假设,但如果是这样的话,目前的文化对它有多大影响呢?你能把它改成创建日期吗?
更新: MSDN指出.Net 3.5不保证排序顺序,但2.0版本的页面根本没有说什么,这两个页面都不会帮助您按创建或修改时间等方式进行排序.一旦你有了数组(它只包含字符串),这些信息就会丢失.我可以构建一个比较器来检查它获得的每个文件,但这意味着重复访问文件系统,大概是.GetFiles()方法已经这样做了.似乎非常低效.
假设我按名称在资源管理器中对文件列表进行了排序,如下所示:
2009-06-02-4.0.9.txt
2009-06-02-4.0.10.txt
2009-06-02-4.0.11.txt
2009-06-02-4.0.12.txt
我有一个FileInfo Comparer,它按名称对FileInfo对象数组进行排序:
class FileInfoComparer : IComparer<FileInfo> {
public int Compare(FileInfo x, FileInfo y) {
return string.Compare(x.FullName,
y.FullName,
StringComparison.OrdinalIgnoreCase);
}
}
Run Code Online (Sandbox Code Playgroud)
使用此Comparer从上面对相同的文件列表进行排序产生:
2009-06-02-4.0.10.txt
2009-06-02-4.0.11.txt
2009-06-02-4.0.12.txt
2009-06-02-4.0.9.txt
这是有问题的,因为订单非常重要.
我想有一种模仿Windows在C#代码中所做的事情的方法,但我还没有找到办法.任何帮助表示赞赏!
谢谢!