如何获取与windows文件系统相同的文件序列?由于文件系统的排序项很多:名称、大小、上次修改日期、时间、标签(Win7)、分级(Win7),所以如果使用CFileFind应用程序接口来模拟windows文件系统的排序行为是相当困难的。那么如何获取与windows文件系统顺序相同的文件呢??
发布于 2010-03-10 15:45:29
我不知道CFindFile做了什么,但是FindFirstFile
和朋友会按照文件在NTFS目录中的顺序返回文件。
我不确定为什么这是最可取的,然而,根据任何人的定义,它并不完全是“直观的”……
发布于 2010-03-10 16:37:46
Raymond Chen在"Why do NTFS and Explorer disagree on filename sorting?"上写了一篇非常详细的文章
但是,请注意,FindFirstFile()
及其相关组件实际上并不对结果进行排序--它只是按照文件系统提交文件的顺序将文件返回给您。NTFS有一个用于其自身目的的排序(我不确定是否指定了该排序-它对您来说似乎是有序的,这可能只是一个巧合)。FAT文件系统和网络文件系统将有它们自己的顺序(或者没有顺序-文件可能只是按照它们碰巧被创建的顺序在目录中-我认为FAT系统就是这样)。
如果您需要对FindFirstFile()
和朋友返回的文件进行特殊排序,则需要自己进行排序。
在FindFirstFile()
docs中:"FindFirstFile不对搜索结果进行排序。有关其他信息,请参阅FindNextFile。“
在docs for FindNextFile()
中:“不保证搜索返回文件的顺序,例如字母顺序,它依赖于文件系统。如果必须对数据进行排序,则应用程序必须在获得所有结果后进行排序。”
CFileFind()
不保证返回的文件名的顺序-如果它也做了排序,我会感到惊讶(因为它必须从目标目录获取所有可能的文件,然后才能返回第一个文件才能完成)。
https://stackoverflow.com/questions/2415245
复制相似问题