Comment puis-je obtenir la séquence de fichiers qui est la même que le système de fichiers Windows? Parce qu'il y a tellement d'éléments de tri de système de fichiers: nom, taille, date de dernière modification, tag (win 7), rating (win 7), donc si j'utilise CFileFind API pour simuler le comportement de tri comme système de fichiers Windows est assez difficile. Alors, comment puis-je obtenir les fichiers dont la séquence est la même que le système de fichiers Windows ??Question sur le problème de tri du système Windows
Répondre
Je ne suis pas sûr de ce que fait CFindFile, mais FindFirstFile
et amis renvoie les fichiers dans l'ordre où ils existent dans le répertoire NTFS.
Je ne sais pas pourquoi ce serait le plus souhaitable, cependant, ce n'est pas exactement « intuitive » par la définition de personne ...
Raymond Chen a fait un article assez détaillé sur "Why do NTFS and Explorer disagree on filename sorting?"
Cependant, notez que FindFirstFile()
et ses proches ne trient pas réellement les résultats - ils vous renvoient simplement les fichiers dans l'ordre dans lequel le système de fichiers les remet. NTFS a une commande à ses propres fins (et je ne suis pas sûr que cette commande est spécifiée - que cela vous semble ordonné est probablement juste une coïncidence heureuse). Les systèmes de fichiers FAT et les systèmes de fichiers réseau auront leur propre commande (ou pas d'ordre - les fichiers peuvent être dans le répertoire dans l'ordre dans lequel ils ont été créés - je pense que les systèmes FAT sont comme ça).
Si vous avez besoin d'une commande particulière pour les fichiers retournés par FindFirstFile()
et vos amis, vous devrez effectuer ce tri vous-même.
Depuis le FindFirstFile()
docs: "FindFirstFile ne fait pas le tri des résultats de la recherche Pour plus d'informations, voir FindNextFile."
Et à partir du docs for FindNextFile()
: "L'ordre dans lequel la recherche renvoie les fichiers, tels que l'ordre alphabétique, n'est pas garanti et dépend du système de fichiers.Si les données doivent être triées, l'application doit effectuer la commande après avoir obtenu tous les résultats. "
CFileFind()
CFileFind()
ne fait aucune promesse sur l'ordre des noms de fichiers retournés - je serais étonné s'il faisait un tri non plus (puisqu'il devrait obtenir tous les fichiers possibles du répertoire de destination avant de retourner le premier pour pouvoir le retirer).
Emm, je veux récupérer la séquence de fichiers la même que l'explorateur, mais la séquence de fichiers dans l'explorateur est conçu par l'utilisateur en taille de fichier, date de dernière modification, etc, et il existe plusieurs critères de tri dans l'explorateur. simuler le tri du fichier d'exploration. Donc, y a-t-il une méthode pour explorer la séquence de fichiers? – user290305
- 1. Une question sur le cache du système de fichiers
- 2. Windows Programmation du système
- 3. Couleurs du système Windows correspondant: lumière sur le noir
- 4. structure du système d'exploitation Windows
- 5. coordonne le problème du système avec jogl
- 6. Objectif C sur le système Windows
- 7. Problème d'appel système Windows dans W2K8
- 8. Quel est le nom du bouton du menu système Windows?
- 9. question sur le problème de euler projet
- 10. Shell Problème de tri
- 11. propagation de variables d'environnement sur système Windows
- 12. SQLite - question de tri
- 13. Question de tri SQLite
- 14. problème dans le tri tri 2d tableau tri
- 15. php problème de tri du tableau
- 16. valeurs tri question Excel
- 17. Les appels système sur Windows
- 18. Problème de mise à l'échelle du formulaire sur le système d'exploitation chinois (96 ppp)
- 19. Clé de tri arbitraire dans le système de fichiers
- 20. Dépôt simple Question à propos du filtrage et du tri
- 21. WPF sur Windows Embedded Framework question
- 22. Windows 7 Date du fichier Question
- 23. Comment vérifier les autorisations du compte système local sur Windows?
- 24. DataTable question de test de tri
- 25. Python tri Question
- 26. Informations sur l'écran lorsque le système Windows est verrouillé (.NET)
- 27. Échec de l'initialisation du système de configuration - Service Windows .NET
- 28. Comment la recherche problème avec Windows « surgelés » système
- 29. Problème de référence du système d'entrée
- 30. Différence dans la lecture du fichier .CSV dans le système UNIX et le système Windows
La méthode CFindFile est similaire à FindFirstFile, les deux sont triés par ordre alphabétique. Quelqu'un me suggère d'utiliser l'API IShellFolder, quelqu'un connaît-il la méthode IShellFolder? – user290305
Oh, je n'ai pas compris votre question ... Je pensais que vous vouliez trier les fichiers dans l'ordre du système de fichiers, pas dans l'ordre que l'explorateur utilise. Explorer utilise * approximativement * le même ordre que StrCmpLogicalW, donc vous pouvez probablement l'utiliser pour trier les noms de fichiers. –
Emm, je veux récupérer la séquence de fichiers la même que l'explorateur, pas l'ordre du système de fichiers. Mais la séquence de fichiers dans l'explorateur est conçue par l'utilisateur en taille de fichier, date de dernière modification, etc., et il y a beaucoup de critères de tri dans l'explorateur, donc je ne peux pas simuler le tri du fichier d'exploration. Il ne suffit donc pas de trier le fichier comme StrCmpLogicalW. – user290305