# Hilfe bei Java Programmierung



## Scar@47 (30. November 2010)

Hey Leute,
ich schreibe in info meine facharbeit und wollte ein paar sachen einbinden,von denen ich aber leider keinen plan habe wie es gehen soll. Ich weiß auch nicht was ich googlen soll, da ich keine halbe seite da eintippen kann xD
Ich schreibe das programm in Java mit Eclipse.
Es geht im grundsätzlichen darum, dass ich ne mediathek habe und diese soll ausgelesen und in einer liste aufgeführt werden.(die soll 8-12 seiten haben also eher etwas sehr kleines..nichts was zu tief ins detail geht bitte)
also:

1.  ich möchte das sich auf knofdruck ein neues fenster öffnet, bei dem man ein verzeichnis angeben kann, das ausgelesen werden soll-> ein ganzer ordner sollte das sein. Meine Frage hierzu: -wie kann ich diese bekannte quellzeile (die man zb auch beim start von java hat) einbinden? also ich denke das fenster bekomme ich schon noch hin.
2. Aus dem Verzeichniss sollen dann die ordner als Strngs rausgelesen werden. zB. wenn man eigene dateien angibt dann soll "eigene Bilder" und "Eigene Musik" als String gegeben werden.

würde mich über hilfe echt freuen ich bin nicht soo der held in Java


----------



## bingo88 (1. Dezember 2010)

Für das Fenster gibt es einen vorgefertigten Dialog, Oracle hat dazu ein brauchbares Tutorial. Tipp: Suche nach DIRECTORIES_ONLY.

Zum Auflisten von Ordnern kannst du dann dein erzeugtes File-Objekt nehmen und die Methode listFiles() aufrufen. Die liefert dir eine Liste aller Dateien und Ordner im aktuellen Pfad. Dann musst du für jedes dieser Objekt prüfen, ob es sich um ein Verzeichnis handlet (isDirectory). Für die Objekte, für die das Zutrifft, wiederholst du die Prozedur. Daher würde ich dir hier rekursive Aufrufe empfehlen (es handelt sich ja auch um eine Baumstruktur ^^)

An die Strings kommst du mit getName() oder so, sieh am besten dazu mal in der Javadoc nach.


----------



## Scar@47 (9. Dezember 2010)

also
habe das ausprobiert. habe jetzt jedoch 2 probleme:
1. wenn ich den filechooser aus einer gui heraus aufrufen will, dann geht das nicht -.- der führt den befehlt zwar durch, aber das fenster öffnet sich nicht...habe davor und danach mit ner syso ausgabe versucht, beide gehen aber das fenster kommt nicht  ka warum...wenn ich genau die selbe zeile in die Startklasse einfüge dann gehts...aber ich will den halt öffnen wenn ich auf so nen button klicken -.-
2. ich will das sich das fenster, das ich geöffnet habe, enable setzt. mit this.setenable(true) geht das aber nicht-wieso? 
3. ich woltle wenn ich auf den exit knopf des fensters gehe, das sich der filechooser schließt-aber nicht die GUI von der ich den Filechooser aus gestartet habe.
4. ich möchte mit dem filechooser ordner einfügen-also eig nur den ordner weil ich aus dem ordnername sachen rauslesen will-zb name oder so-aber der filechoose nimmt nur dateien.

http://download.oracle.com/javase/t...ipfiles/components-FileChooserDemoProject.zip

habe den als gerüst genommen damit ich nen anfang habe weil ich selber nicht viel ahnung habe


----------



## Scar@47 (9. Dezember 2010)

okay das mit dem ordner auswählen geht...aber ich will das der mir die ordner in dem ordner alle auflistet.
geht das auch?


----------



## bingo88 (13. Dezember 2010)

Der Code hier is ausm Kopf, daher ungetestet!


```
File[] listDirs(String rootDir) {
    FileFilter myFilter = new FileFilter() {
        public boolean accept(File f) {
            return f.isDirectory();
        }
    }; // Das ist eine anonyme innere Klasse, falls dich die Syntax irritiert

    return rootDir.listFiles(myFilter);
}
```
Das müsste dir eine Liste aller Verzeichnisse in einem gegebenen Pfad liefern (ohne Unterverzeichnisse!). Diese Methode kannst du nun für jedes zurückgegebene File-Objekt rekursiv aufrufen, damit du den kompletten Verzeichnisbaum inkl. aller Unterverzeichnisse einlesen kannst.


----------



## Scar@47 (23. Dezember 2010)

das listfiles gibt es nicht und der will die ganze methode in string ändern-.-


----------



## Scar@47 (23. Dezember 2010)

also der streicht mir auch direkt die erste zeile an, ohne quickfix oder so...sry aber ich habe vorher nicht mit files gearbeitet darum weiß ich nicht ganz wie das gehen soll...
<-- noob


----------



## bingo88 (23. Dezember 2010)

hast du auch alle notwendigen Pakete importiert? (java.io oder sowas)


----------



## Scar@47 (23. Dezember 2010)

ja habe ich - ich nutzen den jfilechooser
habe da so ein bischen an der demo klasse die du mir geschickt hast rum gebastelt weil ich vieles nicht gebraucht habe. hat auch eig alles soweit gefunz nur der gibt mir halt nur den geöffneten ordner aus und nicht die unterordner, weil der programmtext iwie nicht geht.

also ich habe den kram inne gui geschrieben. 
das ist jetzt die methode die mir den filechooser erstellt und der funktioniert auch. man kann da nen ordner wählen und der gibt mir dann auch den namen der ordners aus. ich habe versucht selber iwie nen filter zu machen aber das echt kompliziert weil der immer alles als falsch ansieht oder mit so ne neue void da erschafft den ich nciht ganz verstehe.


> public void oeffnen(){
> 
> 
> int returnVal = fc.showOpenDialog(GUI.this);
> ...



mir würde das auch schon reichen wenn ich einfach alle ordner makieren kann und der mir dann alles einzel aufschreibt


int returnVal = fc.showOpenDialog(GUI.this);

fc.setFileSelectionMode(JFileChooser.DIRECTORIES_O NLY);

// if (returnVal == JFileChooser.APPROVE_OPTION) {
if (returnVal == JFileChooser.APPROVE_OPTION) { 


File file1 = fc.getSelectedFile();
fileliste = file1.listFiles();

//This is where a real application would open the file.
System.out.println("Opening: " + file1.getName() + ".");

System.out.println(fileliste.toString());

} else {
System.out.println("Open command cancelled by user.");
}


}
}

so weit bin ich jetzt nur leider weiß ich nicht was ich mit der fileliste machen soll weil ich will ja am ende die namen der unterordner als strings haben.


----------

