# File.listFiles ohne .sort



## flopps (27. Feb 2014)

Hallo, ich habe mir eine kleine klasse geschrieben die alle dateien eines ordner ausliest (in welche die jar liegt und ohne unterordner) und mir diese dann zur überprüfung ausgibt.
das programm funktionier so ganz gut bis ich zu dem punkt komme an dem ich feststellen muss das er die dateien anscheinend alphabetisch sortiert bzw schon alphabetisch überprüft ob ein/e ordner/datei eine datei ist. er geht also nicht die objekte des ordners der reihe nach durch wie sie im ordner liegen. wie kann ich das zusätzlich realisieren?

hier zum download die fertige jar und die .java dateien: 
File-Upload.net - dist.rar

zum testen ist nur der button file count interessant, der rest ist noch nicht mit logik versehen.
freue mich über euere vorschläge 

grüße flopps


----------



## anti-held (27. Feb 2014)

Um die Ordner an die erste Stelle zu stellen, kannst du dein Array in eine Liste stecken und mit einem Comparator sortieren:


```
File file = new File("C:/tmp");
		File[] files = file.listFiles();
		
		Comparator<File> comperator = new Comparator<File>() {
			
			@Override
			public int compare(File file0, File file1) {
				if(file0.isDirectory() && file1.isDirectory()){
					return file0.getName().compareTo(file1.getName());
				}
				if(file0.isDirectory() && !file1.isDirectory()){
					return -1;
				}
				if(!file0.isDirectory() && file1.isDirectory()){
					return 1;
				}
				return file0.getName().compareTo(file1.getName());
			}
		};		
		List<File> list = Arrays.asList(files);
		Collections.sort(list, comperator);
		
		for (File f:list) {
			System.out.println(f);
		}
```

Wenn du eine andere Sortierung willst, musst du nur den Code im compare des Comparators ändern.


----------



## flopps (27. Feb 2014)

ok, es scheint das mein problem nicht rübergekommen ist, ich probiers nochmal 
als erstes sind mir alle ordner völlig egal da ich diese sowieso ignoriere da mich nur die dateien in meinem zielordner interessieren. als zweites haben diese ja von vornherein innerhalb des ordner eine ordnung die ich selber ja erstellen kann, oder von windows ordnen lassen kann. 
als unsortiertes bsp habe ich 4 dateien:
1. b
2. a
3. d
4. c

würde ich nun mein programm auf diesen ordner mit den 4 dateien anwenden wären sie automatisch 
a, b, c, d sortiert.
ich möchte nun wissen wie ich diese nun als unsortierte liste laden kann, dafür muss ich aber wissen ob das "problem" in der java methode listFiles oder bei windows zu suchen ist(vielleicht sind die dateien im hintergrund immer alphabetisch sortiert und java greift darauf zu)


----------



## anti-held (27. Feb 2014)

Ich denke dass du von einem Java-Programm aus keinen Zugriff darauf hast, nach welchen Kriterien der Windows Explorer seine Dateien sortiert.

Für was brauchst du denn diese Information?


----------



## flopps (27. Feb 2014)

ich möchte vollautomatisch eine art verzeichnis erstellen.
bsp: 
ich habe 7 dateien, davon möchte ich die ersten 3 als deckblatt und die anderen vier jeweils alsfolge dateien derer, so das ich zum schluss 15 dateien habe -> 1.0 (deckblatt), 1.1 (deckblatt + erste datei der nicht deckblätter), ... , 2.0, ... 3.5, es ist aber wichtig das die dateien unsortiert bleiben da der name keine rolle spielen soll sondern nur die position wie sie im ordner liegen. 
da aber nun listFiles doch nach namen sortiert habe ich ein problem


----------



## Sen-Mithrarin (27. Feb 2014)

wie wäre es einfach mal mit DOC lesen ?


> There is no guarantee that the name strings in the resulting array will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order.



java selbst kann nichts für die sortierung ... die kommt so vom file-system selbst ... also vom NTFS-treiber von windows ... das kann man mit java NICHT beeinflussen


----------



## flopps (28. Feb 2014)

dann ist zumindest das geklärt. 
dachte es gibt vielleicht noch eine andere möglichkeit als listFiles mit der ich es realisieren kann, danke für die antworten

vote for close


----------

