java Ordre de sorting des fichiers sous Windows et différence Linux

J’ai un dossier dans Windows / Linux qui contient les fichiers ci-dessous

test_1a.play test_1AA.play test_1aaa.play test-_1AAAA.play 

Je suis en train de lire des fichiers et de les stocker Mais Windows et Linux donnent un ordre différent. Comme mon application s’exécute sur les deux plates-formes, j’ai besoin d’un ordre cohérent (ordre Linux). Toute suggestion pour corriger cela.

 File root = new File( path ); File[] list = root.listFiles(); list listofFiles = new ArrayList(); ..... for ( File f : list ) { ... read and store file in listofFiles ... } Collections.sort(listofFiles); 

Windows me donne l’ordre ci-dessous

 test-_1AAAA.play test_1a.play test_1AA.play test_1aaa.play 

Linux me donne l’ordre ci-dessous

 test-_1AAAA.play test_1AA.play test_1a.play test_1aaa.play 

Vous devrez implémenter votre propre Comparator puisque File.compareTo utilise l’ordre “systems”.

Je pense (non coché) que Linux utilise l’ordre “standard” par nom de fichier (sensible à la casse), donc un exemple d’implémentation pourrait ressembler à ceci:

 public static void main(Ssortingng[] args) { List files = new ArrayList(); files.add(new File("test_1a.play")); files.add(new File("test_1AA.play")); files.add(new File("test_1aaa.play")); files.add(new File("test-_1AAAA.play")); Collections.sort(files, new Comparator() { @Override public int compare(File o1, File o2) { Ssortingng p1 = o1.getAbsolutePath(); Ssortingng p2 = o2.getAbsolutePath(); return p1.compareTo(p2); } }); System.out.println(files); } 

Les sorties:

 [test-_1AAAA.play, test_1AA.play, test_1a.play, test_1aaa.play]