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]