如何获取与Windows文件系统相同的文件序列?因为有这么多的文件系统排序项:名称,大小,最后修改日期时间,标签(win 7),评级(win 7),所以如果我使用CFileFind API来模拟排序行为,因为windows文件系统相当困难。那么如何才能获得序列与windows文件系统相同的文件?
答案 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()
没有对返回的文件名的顺序作出任何承诺 - 如果它做了任何排序我会感到惊讶(因为它必须从目标目录中获取所有可能的文件,然后再将第一个文件返回到能把它拉下来。)