Probleme beim Dateien auslesen

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Ich habe ein Programm, dass im momentanen Status Verzeichnisse und Dateien auslesen soll. Durch eine Checkbox wird bestimmt, ob nur das gewählte Verzeichnis oder auch noch die Unterverzeichnisse durchsucht werden sollen. Die Verzeichnisse und die Dateien sollen in eine Liste eingetragen werden.

Was funktioniert:
- Endlich so gut wie alles!

Was nicht funktioniert und wie es funktionieren sollte:
- Wenn jCheckBox1 deaktiviert ist ( => String ext = "mp3" ) und jCheckBox2 aktiviert ( => Unterverzeichnisse in die Suche miteinbeziehen) , dann sollte das Programm alle Mp3 unterhalb meines BasisVerzeichnisses Suchen und in einem Vector auflisten. Allerdings findet er nur die Dateien im Basisverzeichnis.



[/code]
Code:
    public String ext;
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        /** Variablendeklaration **/
        
        
        if(jCheckBox1.isSelected())
            ext = "";
        else
            ext = jTextField2.getText().trim(); // im Textfeld steht "mp3"
        
        FileFilter ff = new FileFilter();                                   // Erstelle einen FileFilter für Verzeichnisse (siehe unten)
        FilenameFilter fnf = new FilenameFilter();                          // Erstelle einen FilenameFilter für Dateien (siehe unten)
        
        
        
        [...]
        

            
            File wDir = new File(String.valueOf(directoryChooser.getSelectedFile()));   // Speichere Stammverzeichnis in wDir
            
            
            /** Hier muss überprüft werden, ob "Include subdirectories"
             * aktiviert ist
             */
            
            if(jCheckBox2.isSelected()) {
                /** Erstelle einen Vector, gefüllt mit alles Unterverzeichnissen
                 * und speichere ihn in das Array sDirectories[].
                 * Danach gib es in der Directory Liste aus.
                 */
                
                Vector vFiles = new Vector(10);         // Absolute Dateinamen
                getRecursive(new File(wDir.getPath()), vFiles, fnf);
                
                
                /** Gib Dateien und Verzeichnisse in JList aus */
                
                setDirectoryList(vDirectories);
                setFilesList(vFiles);
                
            }
    }                                        
    
    /** Das ist der FileFilter, der nur
     * Verzeichnisse herausfiltert.
     */
    
    private class FileFilter implements java.io.FileFilter {
        public boolean accept(File f) {
            return f.isDirectory();
        }
    }
    
    
    /** Das ist der FilenameFilter, der nur
     * Dateien herausfiltert, die der Dateiendung
     * in JTextfield1 entsprechen. Aber auch
     * Verzeichnisse, damit die Rekursive Methode
     * getRecursive(File basedir, Vector files, FilenameFilter fnf)
     * funktioniert.
     */
    
    private class FilenameFilter implements java.io.FilenameFilter {
        public boolean accept(File dir, String file) {
            return file.toLowerCase().endsWith(ext.toLowerCase()) || new File(dir.getPath()+file).isDirectory();
        }
    }
    
    
    public void getRecursive(File basedir, Vector files, FilenameFilter fnf) {
        File[] f = basedir.listFiles(fnf);
        for(int i = 0; i < f.length; i++) {
            if(f[i].isFile()) files.add(f[i]);
            if(f[i].isDirectory()) {
                getRecursive(f[i], files, fnf);
            }
        }
    }
    
    public void setDirectoryList(Vector dir) {
        jList1.setListData(dir);
        if(dir.size() == 1)
            jLabel4.setText(dir.size() + " directory selected");
        else
            jLabel4.setText(dir.size() + " directories selected");
    }
    
    public void setFilesList(Vector files) {
        jList2.setListData(files);
        if(files.size() == 1)
            jLabel5.setText(files.size() + " file selected");
        else
            jLabel5.setText(files.size() + " files selected");
    }
 

mic_checker

Top Contributor
Wenn Unterverzeichnisse nicht durchsucht werden sollen, wird nur ein merkwürdiger String "[Ljava.io.File;@9ed927" o.ä. in die JList2 geschrieben.

Der Übeltäter:

Code:
                vFiles.add(String.valueOf(wDir.listFiles(fnf)));

Du könntest es ja so machen:
Code:
                File[] myDir = wDir.listFiles(fnf);
                for(int i = 0;i < myDir.length;i++) 
                	vFiles.add(myDir[i].getName());
 

mic_checker

Top Contributor
Was nicht funktioniert:
- Wenn Unterverzeichnisse durchsucht werden, dann werden ausnahmslos alle Dateien in die JList2 geschrieben.

Ich nehme an stattdessen soll es so sein:

- Dass generell nur die Dateien in die JList2 eingetragen werden, die per JTextField2 bestimmt werden.

Dafür müsstest du deinen FilenameFilter entsprechend anpassen.
Btw. wo spezifiziest du welche Dateien akzeptiert werden? Konnte nirgendwo was finden.

Du könntest ja in etwa so was machen:
Code:
        FilenameFilter fnf = new FilenameFilter() {
        	public boolean accept(File dir, String name) {
            return name.endsWith(jTextField2.getText().trim());
        	} 
        };

Ist noch die Frage was du anzeigen lassen willst wenn in Textfeld2 nichts steht etc....
 

babuschka

Top Contributor
MicChecker, danke für deine Antwort, aber so habe ich es gemacht. Nur ist es anders geschrieben. ext ist eben dieses Textfeld, ich konnte es nur nicht so eintragen wie du, weil sonst Fehler auftreten. Also habe ich weiter oben ext public gemacht und beim klick auf den Button mit dem Filterstring gefüllt :D

Also wenn die jCheckBox1 "Rename all" gesetzt ist, impliziert das ein leeres Textfeld: ext = "";
Dann will ich alle Dateien anzeigen lassen. Leider funktioniert folgendes nicht:


Code:
private class FilenameFilter implements java.io.FilenameFilter {
        public boolean accept(File dir, String file) {
            return file.toLowerCase().endsWith(ext.toLowerCase()) && !file.isDirectory();
        }
    }

Das ist etwas doof. :bahnhof:
 

mic_checker

Top Contributor
1) ext ist kein Textfeld ;)
2) Wo füllst du den Button mit dem Filterstring? Bin vielleicht nur blind weils noch so früh am morgen ist ;)
 

babuschka

Top Contributor
ext ist aber der String, den ich mit dem Wert von Textfeld initialisiere. Siehe Codesegment 2, Zeile 2 bis 11.

Ich fülle den Button nicht mit dem Filterstring. Wenn ich auf den Button klicke, wird ... siehst du ja dann im Codesegment 2, Zeile 2 bis 11.
 

mic_checker

Top Contributor
Wir sprechen also von folgendem Code:

Code:
public String ext;
   
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        /** Variablendeklaration **/
       
       
        if(jCheckBox1.isSelected())
            ext = "";
        else
            ext = jTextField2.getText().trim();

oder?

Du übergibst zwar ext den Inhalt vom Textfeld, aber was dann? Du machst weiter nichts damit. Deshalb müsstest du deinen FilenameFilter umschreiben, du kannst ja auch "ext" dadrin benutzen....
 

babuschka

Top Contributor
Ich benutze doch "ext" darin?

Code:
private class FilenameFilter implements java.io.FilenameFilter {
        public boolean accept(File dir, String file) {
            return file.toLowerCase().endsWith([b]ext[/b].toLowerCase());
        }
    }

Also entweder reden wir aneinander vorbei, oder ich raff einfach nicht, was du mir sagen willst, lol
 

mic_checker

Top Contributor
Arg, deine Namensgebung hat mich irritiert...egal....

Welche Probleme bestehen denn nun noch? Falls noch welche bestehen ...
 

babuschka

Top Contributor
Es werden hier nur die Dateien im ausgewählten Verzeichnis in den Vector gschrieben. Er durchsucht einfach nicht die Unterverzeichnisse. Und ich weiß nicht, wie ich das machen soll.


Code:
       String ext = "mp3";
                FilenameFilter fnf = new FilenameFilter();
                Vector vFiles = new Vector(10);
                getRecursive(new File(String.valueOf(wDir)), vFiles, fnf);

Code:
    private class FilenameFilter implements java.io.FilenameFilter {
        public boolean accept(File dir, String file) {
            return file.toLowerCase().endsWith(ext.toLowerCase());
        }
    }
    
    public void getRecursive(File basedir, Vector files, FilenameFilter fnf) {
        File[] f = basedir.listFiles(fnf);
        for(int n = 0; n < f.length; n++) {
            if(f[n].isFile()) files.add(f[n]);
            if(f[n].isDirectory()) {
                getRecursive(f[n], files, fnf);
            }
        }
    }
 

babuschka

Top Contributor
Mantis hat gesagt.:
Es werden hier nur die Dateien im ausgewählten Verzeichnis in den Vector gschrieben. Er durchsucht einfach nicht die Unterverzeichnisse. Und ich weiß nicht, wie ich das machen soll.


Code:
       String ext = "mp3";
                FilenameFilter fnf = new FilenameFilter();
                Vector vFiles = new Vector(10);
                getRecursive(new File(String.valueOf(wDir)), vFiles, fnf);

Code:
    private class FilenameFilter implements java.io.FilenameFilter {
        public boolean accept(File dir, String file) {
            return file.toLowerCase().endsWith(ext.toLowerCase()) || new File(dir.getPath()+file).isDirectory();
        }
    }
    
    public void getRecursive(File basedir, Vector files, FilenameFilter fnf) {
        File[] f = basedir.listFiles(fnf);
        for(int n = 0; n < f.length; n++) {
            if(f[n].isFile()) files.add(f[n]);
            if(f[n].isDirectory()) {
                getRecursive(f[n], files, fnf);
            }
        }
    }
 

mic_checker

Top Contributor
Hmm..hab das ganze gerad nochmal getestet. Du meinst folgende Situation:
User wählt aus "Include Subdirectories" -> wählt im FileChooser ein Verzeichnis aus und im Tab "Files" stehen nur die Dateien aus dem aktuellen Verzeichnis , nicht aber die aus den Unterverzeichnissen?

Falls es das nicht ist, dann poste mal bitte das genaue Problem. Bei mir zeigt er zumindest nach oben beschriebener Vorgehensweise auch die Dateien der Unterverzeichnisse an.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Probleme beim schreiben von Dateien Java Basics - Anfänger-Themen 5
M Input/Output Probleme beim Parsen von CSV und TXT Dateien Java Basics - Anfänger-Themen 7
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
D Probleme beim Kompelieren mache ich etwas falsch ? Java Basics - Anfänger-Themen 3
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Probleme beim Array ausgeben Java Basics - Anfänger-Themen 4
M Probleme beim verwenden von Packages Java Basics - Anfänger-Themen 6
G Methoden Probleme beim Methodenaufruf Java Basics - Anfänger-Themen 2
M Array mit eigenem Datentyp probleme beim übergeben Java Basics - Anfänger-Themen 6
G Probleme beim casten von double zu int Java Basics - Anfänger-Themen 3
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
M Erste Schritte Probleme beim Verknüpfen von Methoden Java Basics - Anfänger-Themen 15
A Probleme beim Methodenaufruf von Object[] ! Java Basics - Anfänger-Themen 12
A Probleme beim Methodenaufruf von char[] ! Java Basics - Anfänger-Themen 10
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
M OOP Probleme beim Funktionsaufruf, Java OpenCV Java Basics - Anfänger-Themen 0
X Probleme beim rekursiven Durchsuchen von Verzeichnissen Java Basics - Anfänger-Themen 1
B Probleme beim einlesen einer short variablen für einen Array Java Basics - Anfänger-Themen 1
A LinkedList: Probleme beim Auslesen Java Basics - Anfänger-Themen 2
F Probleme beim Übersetzen Java Basics - Anfänger-Themen 7
O Probleme beim import von Projekten in Eclipse Java Basics - Anfänger-Themen 7
C OOP Probleme beim Addieren von Arrays Java Basics - Anfänger-Themen 4
N Probleme beim entfernen eines JPanels Java Basics - Anfänger-Themen 4
J Probleme beim JRadioButton Java Basics - Anfänger-Themen 2
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
C Probleme beim Array Java Basics - Anfänger-Themen 6
G Probleme beim HTML auslesen Java Basics - Anfänger-Themen 6
N Probleme beim Rechnen mit Integer und double Java Basics - Anfänger-Themen 4
T Probleme beim casten Java Basics - Anfänger-Themen 9
C Input/Output Probleme beim .jar erstellen Java Basics - Anfänger-Themen 5
M Klassen Probleme beim Debuggen - Datentypkonvertierung - Speichern in Datei Java Basics - Anfänger-Themen 7
W Probleme beim Wiedereinstieg Java Basics - Anfänger-Themen 25
P Interpreter-Fehler Probleme beim Ausführen einer Jar Datei Java Basics - Anfänger-Themen 2
F MVC -> Probleme beim Controller Java Basics - Anfänger-Themen 6
0 Log4J Probleme beim einlesen der Log datei Java Basics - Anfänger-Themen 2
F Probleme beim umwandeln von String in Int Java Basics - Anfänger-Themen 10
M Kontaktbuch - Probleme beim Input Java Basics - Anfänger-Themen 3
H Probleme beim erzeugen einer Headerdatei mit javah Java Basics - Anfänger-Themen 3
T Interpreter-Fehler Probleme beim .jar ausführen mit JRE 64bit Java Basics - Anfänger-Themen 9
M Probleme beim Beenden eines Threads Java Basics - Anfänger-Themen 25
A Probleme beim erstellen einer lauffähigen jar Java Basics - Anfänger-Themen 3
A Probleme beim IntervallCheck Java Basics - Anfänger-Themen 4
M Probleme beim Aufruf von Listener in anderer Klasse Java Basics - Anfänger-Themen 9
R Probleme mit NullPointer beim Mp3 abspielen (JMF) Java Basics - Anfänger-Themen 21
I Probleme beim Laden einer .gif-Datei. Java Basics - Anfänger-Themen 8
I Probleme beim Laden eins BufferedImage Java Basics - Anfänger-Themen 8
Sebi Probleme beim Kompilieren Java Basics - Anfänger-Themen 11
I Probleme beim adden von Elementen in einer ArrayList Java Basics - Anfänger-Themen 10
C Probleme beim casten und Objekt zugriff Java Basics - Anfänger-Themen 12
L Probleme beim Ausführen des Programms Java Basics - Anfänger-Themen 9
N Probleme beim abfangen von fehlern Java Basics - Anfänger-Themen 4
B kleine Probleme beim auslesen einer m3u Datei Java Basics - Anfänger-Themen 3
S Probleme beim Umwandeln von Long nach Int Java Basics - Anfänger-Themen 4
G Probleme beim Zufügen eines JLabels Java Basics - Anfänger-Themen 18
M Probleme beim Jar erstellen Java Basics - Anfänger-Themen 7
M Probleme beim Objekzugriff auf andere Klasse: NullPointerExc Java Basics - Anfänger-Themen 5
I Probleme beim Einrichten von Java (PATH-Veriable) Java Basics - Anfänger-Themen 4
A Memory Probleme beim Laden von thumbnails Java Basics - Anfänger-Themen 3
G Probleme beim Login (Webservice) Java Basics - Anfänger-Themen 4
B Probleme beim Kompilieren. Java Basics - Anfänger-Themen 12
M probleme beim parsen Java Basics - Anfänger-Themen 7
R Probleme beim Repaint Java Basics - Anfänger-Themen 3
M probleme beim applet einbinden Java Basics - Anfänger-Themen 7
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
R Probleme beim umwandeln eines String zu einem Int Wert Java Basics - Anfänger-Themen 3
M Probleme beim Datei auslesen Java Basics - Anfänger-Themen 6
M Probleme beim Compileren Java Basics - Anfänger-Themen 29
I Probleme beim ausführen des Programms Java Basics - Anfänger-Themen 6
kulturfenster Probleme beim Erstellen von Objekten Java Basics - Anfänger-Themen 15
kulturfenster Probleme beim Zeichnen einer Geraden Java Basics - Anfänger-Themen 8
S Probleme beim Java Kompilieren + ausführen Java Basics - Anfänger-Themen 6
M probleme beim kompilieren / übersetzen ! Systemeinstellung ? Java Basics - Anfänger-Themen 5
I Probleme beim Ausführen von Anwendungen Java Basics - Anfänger-Themen 2
S Probleme mit Datentyp beim Einlesen Java Basics - Anfänger-Themen 4
I java - probleme beim complimieren Java Basics - Anfänger-Themen 4
L Probleme beim ersten JavaProgramm! Java Basics - Anfänger-Themen 4
P Probleme beim Exportieren einer jar datei Java Basics - Anfänger-Themen 8
M Probleme beim Strich(e) zwichen Java Basics - Anfänger-Themen 3
M Probleme beim Drucken Java Basics - Anfänger-Themen 4
M Probleme beim Zuweisen eines Arbeitsverzeichnis Java Basics - Anfänger-Themen 2
A Probleme beim char-Vergleich! Java Basics - Anfänger-Themen 9
G Probleme beim Compilieren Java Basics - Anfänger-Themen 6
J Probleme beim Vererben Java Basics - Anfänger-Themen 2
C Probleme beim overloaden. Java Basics - Anfänger-Themen 2
W MouseListener Probleme beim Abfangen Java Basics - Anfänger-Themen 8
X probleme beim import Java Basics - Anfänger-Themen 3
S Probleme beim Füllen einer HashMap Java Basics - Anfänger-Themen 15
K Probleme beim Einstieg Java Basics - Anfänger-Themen 2
I Probleme beim Ansprechen eines Arrays Java Basics - Anfänger-Themen 12
T Probleme beim Einlesen eines Strings Java Basics - Anfänger-Themen 3
K Neuronales Netz in Java und Probleme beim Konfigurieren Java Basics - Anfänger-Themen 2
N Probleme beim generieren von Objekten Java Basics - Anfänger-Themen 2
G Unknown Source Probleme beim Starten des Prgramms Java Basics - Anfänger-Themen 2
J probleme beim wieder aufruf Java Basics - Anfänger-Themen 2
J Probleme beim Erstellen eines Programms Java Basics - Anfänger-Themen 5
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben