# JFileChooser für alle Dateien und Directories unterhalb



## Herbert Görgens (19. Nov 2007)

Hallo,

JFileChooser ist mir jetzt bekannt, hab ein paar Beispiele gemacht.

Aber eines fehlt mir noch immer.

Wie kann ich ein Verzeichnis wählen und bekomme ALLE Datein in diesem Verzeichnis UND in allen Unterverzeichnissen (natürlich mit Pfad) zurück...

Das finde ich einfach nicht, wie man das macht.

Freue mich sehr, wenn mir jemand dabei hilft.

Herbert Görgens


----------



## The_S (19. Nov 2007)

Das hat ja ansich nichts mit dem JFileChooser zutun. Einfach von einem Directory-File alle Unterverzeichnisse/Dateien auflisten lassen und evtl. enthaltene Verzeichnisse rekursiv durchgehen. Ein Beispiel dazu findest du in den FAQ.


----------



## Herbert Görgens (19. Nov 2007)

komm ich jetzt im Fernsehen ?


----------



## The_S (19. Nov 2007)

NEIN, zurück zur Wochenshow!


----------



## Herbert Görgens (19. Nov 2007)

Ich tue mir echt schwer,  ich krieg jetzt den Verzeichnisnamen, ok.

Aber wie soll ich das jetzt mit der Rekursion machen.


```
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.filechooser.FileFilter;

public class DateiAuswahlDemo
    {

        public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException
            {
                JFileChooser fc = new JFileChooser();
               
                fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 


                int zustand = fc.showOpenDialog(null);

                if (zustand == JFileChooser.APPROVE_OPTION)
                    {
                        File f = fc.getSelectedFile();
                        System.out.println(f.getName());
                    }

                else
                    System.out.println("Auswahl abgebrochen");
                System.exit(0);
            }

    }
```

Oder soll ich doch DIRECOTRIES_AND_FILES machen, damit gleich die Dateien im ausgewählten Verzeichnis mitgenommen werden ?
Wäre voll toll, wenn mir jemand ein Tipp mit der Rekursion gibt.

Ich zeig euch auch meine neue ERFINDUNG


----------



## The_S (19. Nov 2007)

Was verstehst du daran nicht? 

http://www.java-forum.org/de/viewtopic.php?t=35290

aber nur, wenn wir nicht in dein Wohnzimmer kommen müssen!


----------



## Lex (19. Nov 2007)

Morgen,

in der Methode zum Auflisten der Unterelemente musst du überprüfen ob der übergebene Wert ein Verzeichnis ist, die Unterelemente davon zu deiner Ausgabe hinzufügen und mit den gefunden Werten nochmals deine Methode aufrufen.

MfG
Lex


----------



## Herbert Görgens (19. Nov 2007)

Klasse, es funzt endlich !

Danke, ich sags der ILSE vom SPARMARKT, die sucht auch schon lange nach dieser Lösung !

Weil das sicher öfters gefragt wird hier der Code (nicht schön, aber das wesentliche kann man erkennen und dran weitermachen)


```
import java.io.File;

import javax.swing.JFileChooser;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.filechooser.FileFilter;

public class DateiAuswahlDemo
    {

        public static void listDir(File dir) {
            
            File[] f = dir.listFiles();
            if (f != null) {
               for (int i = 0; i < f.length; i++) {
                  System.out.print(f[i].getAbsolutePath());
                  if (f[i].isDirectory()) {
                     System.out.print(" (Ordner)\n");
                     listDir(f[i]); // ruft sich selbst mit dem
                        // Unterverzeichnis als Parameter auf
                     }
                  else {
                     System.out.print(" (Datei)\n");
                  }
               }
            }
         }
        
        public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException
            {
                JFileChooser fc = new JFileChooser();
               
                fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 
                // fc.setAcceptAllFileFilterUsed(false);
                
                
//                fc.setFileFilter(new FileFilter()
//                    {
//                        @Override
//                        public boolean accept(File f)
//                            {
//
//                                if (f.isDirectory() == true )//
//                                        //|| f.getName().toLowerCase().endsWith(".txt"))
//
//                                { return true; }
//
//                                return false;
//                            }
//                        @Override
//                        public String getDescription()
//                            {
//                                return "*.txt - Textdateien";
//                            }
//                    });

                int zustand = fc.showOpenDialog(null);

                if (zustand == JFileChooser.APPROVE_OPTION)
                    {
                        File verzeichnis = fc.getSelectedFile();
                        listDir(verzeichnis);
                    }

                else
                    System.out.println("Auswahl abgebrochen");
                System.exit(0);
            }

    }
```


----------

