11
votes

Trier les fichiers par nom dans Java diffère de Windows Explorer

J'ai un simple programme Java qui lit un répertoire de fichiers et génère une liste de fichiers. Je trie les fichiers par nom: xxx

Mon problème est qu'il trie par nom de manière différente de celui de Windows Explorer.

Par exemple, si j'ai ces fichiers: abc1.doc, abc12.doc, abc2.doc.

Java triera comme ceci: xxx

Quand j'ouvre le dossier dans l'Explorateur Windows, mon Les fichiers sont triés comme ceci: xxx

Comment puis-je définir Java trier mes fichiers comme dans l'Explorateur Windows? Est-ce une astuce de Windows?


4 Réponses :


18
votes

Windows Explorer utilise son propre algorithme. Afin de trier vos fichiers tels que Explorer, vous devez créer un comparateur personnalisé pour faire le truc: xxx pré>

maintenant, utilisez-le comme suit: P>

  Arrays.sort(files, new WindowsExplorerStringComparator());


1 commentaires

Je voulais ajouter que: l'argument nommé "fichiers" doit être de type chaîne []



0
votes

Trier par chaîne alors par la longueur de nom.


0 commentaires

3
votes

Il a l'air de cette façon.

Cependant, vous pouvez utiliser Arrays.sort () et fournissez un comparateur personnalisé de sorte qu'il trie comme Windows Explorer.


0 commentaires

0
votes

C'est un autre essai de le mettre en œuvre en Java:

java - trier chaînes telles que Windows Explorer

En bref, il se divise les deux chaînes pour comparer des pièces à chiffres et compare ces parties de manière spécifique pour atteindre ce type de tri.

avec cela son iMho un peu plus lisible.


0 commentaires