关于windows系统排序问题的问题

时间:2010-03-10 07:39:57

标签: windows

如何获取与Windows文件系统相同的文件序列?因为有这么多的文件系统排序项:名称,大小,最后修改日期时间,标签(win 7),评级(win 7),所以如果我使用CFileFind API来模拟排序行为,因为windows文件系统相当困难。那么如何才能获得序列与windows文件系统相同的文件?

2 个答案:

答案 0 :(得分:0)

我不确定CFindFile会做什么,但FindFirstFile和朋友按照NTFS目录中存在的顺序返回文件。

我不确定为什么那会是最令人向往的,但是,任何人的定义并不完全“直观”......

答案 1 :(得分:0)

Raymond Chen在"Why do NTFS and Explorer disagree on filename sorting?"

上做了一篇非常详细的文章

但是,请注意FindFirstFile()及其亲属实际上并没有对结果进行排序 - 它只是按文件系统提供的顺序将文件返回给您。 NTFS有一个为自己的目的排序(我不确定是否指定了这个顺序 - 它看起来对你来说可能只是一个快乐的巧合)。 FAT文件系统和网络文件系统将有自己的排序(或者没有排序 - 文件可能只是在它们碰巧创建的任何顺序的目录中 - 我认为FAT系统就是这样。)

如果您需要FindFirstFile()和朋友返回的文件的特定订单,您需要自己进行排序。

来自FindFirstFile() docs:“FindFirstFile不对搜索结果进行排序。有关其他信息,请参阅FindNextFile。”

并且来自docs for FindNextFile():“搜索返回文件的顺序(如字母顺序)无法保证,并且依赖于文件系统。如果必须对数据进行排序,则应用程序必须在获得所有结果后进行排序。“

CFileFind()没有对返回的文件名的顺序作出任何承诺 - 如果它做了任何排序我会感到惊讶(因为它必须从目标目录中获取所有可能的文件,然后再将第一个文件返回到能把它拉下来。)