Вопрос о проблеме сортировки системы Windows - PullRequest
1 голос
/ 10 марта 2010

как я могу получить последовательность файлов, которая совпадает с файловой системой Windows? Потому что существует так много элементов сортировки файловой системы: имя, размер, время последнего изменения, тег (win 7), рейтинг (win 7), поэтому, если я использую API CFileFind для имитации поведения сортировки как файловой системы Windows, это довольно сложно. Так как я могу получить файлы, чья последовательность совпадает с файловой системой Windows ??

Ответы [ 2 ]

0 голосов
/ 10 марта 2010

Рэймонд Чен написал довольно подробную статью на «Почему NTFS и Explorer не соглашаются в сортировке файлов?»

Однако обратите внимание, что FindFirstFile() и его родственники на самом деле не сортируют результаты - они просто возвращают файлы вам в любом порядке, в котором файловая система их передает. NTFS имеет порядок для своих собственных целей (и я не уверен, что этот порядок указан - то, что он кажется упорядоченным для вас, вероятно, просто счастливое совпадение). Файловые системы FAT и сетевые файловые системы будут иметь свой собственный порядок (или без порядка - файлы могут быть просто в каталоге в том порядке, в котором они были созданы - я думаю, что системы FAT такие).

Если вам нужен определенный порядок для файлов, возвращаемых FindFirstFile() и друзьями, вам нужно сделать это самостоятельно.

Из FindFirstFile() документов : «FindFirstFile не сортирует результаты поиска. Для получения дополнительной информации см. FindNextFile.»

И из документов для FindNextFile(): «Порядок, в котором поиск возвращает файлы, например алфавитный порядок, не гарантируется и зависит от файловой системы. Если данные должны После сортировки приложение должно выполнить упорядочивание после получения всех результатов. "

CFileFind() не дает никаких обещаний относительно порядка возвращаемых имен файлов - я был бы удивлен, если бы он также выполнил какую-либо сортировку (поскольку он должен был бы получить все возможные файлы из целевого каталога, прежде чем вернуть первый, который сможет снять).

0 голосов
/ 10 марта 2010

Я не уверен, что делает CFindFile, но FindFirstFile и друзья возвращают файлы в порядке их существования в каталоге NTFS.

Я не уверен, почему это было бы наиболее желательно, хотя, по определению, оно не совсем "интуитивно" ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...