# Ordner "auslesen"



## w0zz (15. Feb 2012)

Hey

wie kann ich den Inhalt eines Ordners (z.B. in dem sich nur *.avi Dateien befinden) auslesen? bzw in einem Array oder Hashmap speichern lassen?
Ich hab auch schon die Glaskugel befragt aber ich komm mit diesen "Anleitungen" nicht wirklich weiter.

Vorallem hat es für mich den Anschein als wär das alles zu vie lfür das was ich brauche.

Gibt es kein Java Utility das ich in die Klasse laden kann und es mir die Daten ließt und speichert?

Greetz,
w0zz


----------



## nrg (15. Feb 2012)

File (Java Platform SE 6)

oder direkt darunter mit FileFilter bzw. FilenameFilter (um z.B. nur die avi-Dateien zu bekommen)


----------



## Michael... (15. Feb 2012)

Die Klasse File besitzt eine Methode listFiles... um alle Dateien eines Verzeichnisses auf in einem Array zurück zu geben.


----------



## w0zz (15. Feb 2012)

Wäre es möglich wenn mir ein Beispiel für den Syntax geben könnte?


----------



## HimBromBeere (15. Feb 2012)

```
File f = new File(path);
File[] files = f.listFiles();
for (File file: files) {...}
```

EDIT: Alternativ kannst du auch mit File#list sämtliche Strukturen extrahieren (alo sowhol Ordner als auch Dateien)


----------



## w0zz (15. Feb 2012)

tut mir leid für die dummen fragen aber das hilft mir auch noch nicht wirklcih weiter...
muss ich zu erst eine klasse erstellen?

ich hab ehrlihc gesagt keine ahnung bin jetzt schon überfordert


----------



## HimBromBeere (15. Feb 2012)

Naja, im einfachsten Fall schreibst du diese paar Zeilen in die main-Funktion rein. Musst du nur doch deoinen Pfad anpassen und dann kannst du innerhalb einer Schleife alle Dateien durchwühlen oder was weiß ich was mit anstellen.


----------



## Michael... (15. Feb 2012)

w0zz hat gesagt.:


> tut mir leid für die dummen fragen aber das hilft mir auch noch nicht wirklcih weiter...
> muss ich zu erst eine klasse erstellen?


Klassen sind die Basis von Java. Code kann nur innerhalb einer Klasse definiert werden.
Grundgerüst einer ausführbaren Klasse.

```
class EineKlasse {
     public static void main(String[] s) {
     }
}
```
Eventuell eher von Grund auf anfangen, bevor man sich mit "komplexeren" Problemen beschäftigt.


----------



## w0zz (15. Feb 2012)

wie kann ich ihm den Pfad sagen?
-> path = D:\test ?

das ist mein Code bis jetzt:


```
class FileTest
{

	public static void main (String[] args) 
	{

File f = new File(D:\Test);
File[] files = f.listFiles();
for (File file: files) {D:\Test};

	}

}
```


----------



## HimBromBeere (15. Feb 2012)

Der Konstruktor für File erwartet einen String, also irgendwas in Anführungszeichen...
Innerhalb der Schleife kannst du z.B. mit System.out.println(...) den Dateinamen ausgeben lassen, um zu testen, ob du alles richtig gemacht hast.
Ein wenig Eigeninitiative wäre schon wünschenswert... was sagt denn dein Compiler zu deinem Code, sicherlich nicht, jauuuu... großartig... ich werd dann mal


----------



## irgendjemand (16. Feb 2012)

sry ... aber dazu muss ich jetzt mal meinen senf geben

@TO
du hast scheinbar noch nicht wirklich ahnung von java und willst dann schon mit I/O rumspielen ? ... ohne dir zu nahe treten zu wollen würde ich dir aif grund der gefahr von datenverlust abraten ...

was mich nur wundert : woher hast du das foreach *for(File file : files)* ?

google mal nach "Java ist auch eine Insel" und fang erstmal mit den basics an bevor du dich in sowas reinsteigerst


----------



## SlaterB (16. Feb 2012)

> was mich nur wundert : woher hast du das foreach *for(File file : files)* ?
von HimBromBeere, gestern 22:15 gepostet 


das Fehlen jeglicher Grundlagen ist wirklich eklatant, jede einzelne Code-Zeile müsste dir auch noch hingeschrieben werden
und du würdest dabei nichtmal etwas lernen, nur abtippen wie eine chinesische Gebrauchsanleitung für einen Wok

mal sehen ob jemand das Spiel hier noch etwas weiterspielt, aber Erfolg darf man nicht erwarten


----------



## jDennis79_nli (16. Feb 2012)

irgendjemand hat gesagt.:


> was mich nur wundert : woher hast du das foreach *for(File file : files)* ?



Von HimBromBeere, ein paar Posts weiter oben.

Ansonsten stimme ich dir voll zu - der "kreative" Gebrauch der foreach-Schleife zeigt ja, dass dem TO hier schon grundlegende Sprachkonstrukte fehlen.


----------



## Gossi (16. Feb 2012)

jDennis79_nli hat gesagt.:


> Ansonsten stimme ich dir voll zu - der "kreative" Gebrauch der foreach-Schleife zeigt ja, dass dem TO hier schon grundlegende Sprachkonstrukte fehlen.



Ich muss aber auch gestehen, dass ich mich 3 Jahre vor den for-Schleifen gedrückt habe 

Hab immer sowas geschrieben:


```
int i = 0;
while(i < liste.size()) {
     //dowado
     i++;
}
```


----------



## jDennis79_nli (16. Feb 2012)

Gossi hat gesagt.:


> Ich muss aber auch gestehen, dass ich mich 3 Jahre vor den for-Schleifen gedrückt habe



Ich glaube, das war *nicht* der Punkt.


----------



## HimBromBeere (16. Feb 2012)

Ich weiß gar nicht, was ihr alle gegen mein Schleifchen habt... es war halt nur eine Variante von vielen, sicherlich wäre das auch mit jeder anderen gegangen...


----------



## SlaterB (16. Feb 2012)

mit 'kreativen Gebrauch' angemeckert wurde der ergänzte Schleifeninhalt, denke ich

```
for (File file: files) {D:\Test};
```


----------



## jDennis79_nli (16. Feb 2012)

SlaterB hat gesagt.:


> mit 'kreativen Gebrauch' angemeckert wurde der ergänzte Schleifeninhalt, denke ich
> 
> ```
> for (File file: files) {D:\Test};
> ```



Natürlich! Das war doch nicht unverständlich formuliert, oder?  

Aber "angemeckert" war das eigentlich sowieso nicht. Irgendwie wird mein "Ton" immer überinterpretiert, auch im RL. Was mache ich bloß falsch?


----------



## irgendjemand (16. Feb 2012)

gut das mit foreach hab ich überlesen ... sry

wie dem auch sei ...
ich denke es sollte klar sei das TO hier deutliche grundlagen fehlen ... und bevor sich TO diese nicht aneignet wird es wenig sinn haben ihn mit code zuzuschütten ...


----------

