Ordner auf alle Unterdatein abfragen

FawKes100

Aktives Mitglied
Guten Morgen,

habe folgendes Problem:

Ich habe beispielsweise folgendes Verzeichnis:
Ordner a -> "bild1.png"
Ordner a -> Ordner b -> Ordner c -> "bild2.png"

Ich bekomme ja bei einem File die Methode listFiles, welche sämtliche Unterverzeichnisse eines Files auslesen kann.
Im Beispiel würde nun a.listFiles ein Array mit dem File zu bild1.png beinhalten und einen File zu Ordner b. Doch ich brauche ein Array (oder ArrayList) die einen File zu bild1.png und bild2.png beinhaltet. Hab da eigentlich folgenden kleinen Algorithmus gebastelt, aber irgendwie scheint der nicht zu funktionieren. Vielleicht kann da mal kurz jemand drüber schauen ob er einen Fehler findet. Oder bietet die Klasse file sogar eine passende Methode, sodass ich mir den Algorithmus sparen könnte?

Hier nun mal kurz der Algorithmus:

Java:
private void getAllFilesFromFile(Mod mod)
    {
        File directory = mod.getFile();

        if(directory.isDirectory())
        {
            File[] dirPath = directory.listFiles();
            getAllFilesFromDirectory(dirPath);
        }
    }

  private void getAllFilesFromDirectory(File[] dirFiles)
    {
       for(int i=0; i< dirFiles.length; i++)
       {
           if(!dirFiles[i].isDirectory())
           {
               uploadFiles.add(dirFiles[i]);
           }
           else
           {
               File[] files = dirFiles[i].listFiles();
               getAllFilesFromDirectory(files);
           }
       }
    }
 

looparda

Top Contributor
Es gibt diverse Libraries, die die Auflistung von Dateien rekursiv liefern können. Mit io.File ist es imo nicht möglich, aber jedoch mit listFiles der richtige Ansatz. Falls du es selbst machen willst:
  • Deine getXXX suggerieren, dass etwas zurückgegeben wird. (Hab eine public Methode, die etwas liefert und private Methoden, die die Arbeit verborgen durchführen)
  • Ändere deine Rekursion, dass sie mit File statt einem collectionwertigen Parameter (File[]) arbeitet. Das wird es dir vereinfachen.
  • Ein kurzer Test (durch Erstellen einer Klasse, Aufruf-Code und Ersetzung von Mod durch ein File) auf einen Ordner hat ergeben, dass alle Dateien rekursiv in die Liste uploadFiles gepackt werden. Ist das nicht was du wolltest? Was erwartest du sonst in der Liste? Funktioniert ein Spezialfall nicht?
 
Zuletzt bearbeitet:

FawKes100

Aktives Mitglied
Hab das ganze jetzt noch ein bisschen abgeändert. Problem ist gewesen, dass die Files die Java mir geliefert hat mit "\\" die Directories von einander abtrennt. Das System brauchte allerdings den normalen Slash, warum auch immer - aber es scheint nun doch zu funktionieren.

Ich hätte allerdings noch eine weitere Frage: die Methode file.lastModified(); liefert einen long wert, wann der File zuletzt geändert worden ist. Nun habe ich mal die Files mit dieser Methode aufgerufen alle und diese long Werte in eine csv Datei schreiben lassen. Nun möchte ich abgleichen ob einer dieser files aktualisiert worden ist.

Das erneute Abfragen der Files nach dem lastModified sieht bei mir so aus:

Java:
 for(int i=0; i< mods.length; i++)
            {
                updateDirectory.add(mods[i].getFile().lastModified());
                updateFile.add(mods[i].getModFile().lastModified());
            }

Dann soll dieses mit den eingespeicherten Werten abgeglichen werden ob diese aktueller sind:

Java:
 for(int i=0; i < mods.length; i++)
            {
                if(updateFile.get(i) > mods[i].getChangeModFile() || updateDirectory.get(i) > mods[i].getChange())
                {
                    updateMods.add(mods[i]);
                }
            }

Allerdings landen in dieser ArrayList trotzdem alle Files. Vergleiche ich die Long Werte irgendwie falsch miteinander?
 

looparda

Top Contributor
Das System brauchte allerdings den normalen Slash, warum auch immer - aber es scheint nun doch zu funktionieren.
Ich dachte es geht darum welche Dateien in der Ergebnisliste liegen. Jetzt schreibst du etwas vom Dateiseperator in Pfaden. Und welches System?

Ich denke eine Änderung am betrachteten Ordner inkl. allen enthalten Dateien darf nicht nur Dateien verändern sondern auch Löschen. Die Löschung macht jedoch deine Reihenfolge in der Liste kaputt. Statt eine Liste würde ich ein Mapping Absoluter Dateiname -> Änderungstimestamp anlegen.

Vergleiche ich die Long Werte irgendwie falsch miteinander?
Schwer zu sagen ohne die konkreten Timestamps deines Dateisystems. Außerdem blick ich nicht durch was mods sind und wo sie herkommen und was getChange und getChangeModFile liefert und wo der Unterschied ist.Außerdem ist nicht klar wann was von wem aufgerufen wird. Schreib doch ein paar Unit-Tests, um das Verhalten deines Codes zu kontrollieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
StrikeTom Wie ermittel ich alle dateinamen in einem Ordner Java Basics - Anfänger-Themen 2
T alle Ordner in einem Ordner in JList anzeigen Java Basics - Anfänger-Themen 3
G Alle Ordner durchgehen Java Basics - Anfänger-Themen 6
S Alle Dateien in einem Ordner zählen Java Basics - Anfänger-Themen 7
V Jtree: Alle Verzeichnisse und Ordner anzeigen, aber wie? Java Basics - Anfänger-Themen 2
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
E Javamail Gesendet ordner Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
T src Ordner ausführen Java Basics - Anfänger-Themen 9
M Pfadprobleme - Zugriff auf einen Ordner im Workspace Java Basics - Anfänger-Themen 17
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
L Files verschieben in einen Ordner Java Basics - Anfänger-Themen 87
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
J Eclipse Einrichten : Umzug in anderen Ordner Java Basics - Anfänger-Themen 2
N Project layout eclipse ( seperate ordner für klassen ? ) Java Basics - Anfänger-Themen 1
F Zeile in Ordner Java Basics - Anfänger-Themen 4
J variablePathPart ändern nach dem Ordner abgearbeitet worden ist Java Basics - Anfänger-Themen 1
das_leon Auf Ordner zugreifen (Vollzugriff) Java Basics - Anfänger-Themen 2
MR._FIRE_Flower Ordner im Explorer öffnen lassen Java Basics - Anfänger-Themen 2
C Methoden Dateien im Ordner anzeigen Java Basics - Anfänger-Themen 12
L Ordner Zippen Java Basics - Anfänger-Themen 2
L Ordner zusammenlegen Java Basics - Anfänger-Themen 3
J Java Ordner Erstellung nicht möglich. Java Basics - Anfänger-Themen 3
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
M Erste Schritte Ordner im selber Verzeichnis wählen Java Basics - Anfänger-Themen 1
D Input/Output Ordner aus .Jar in das Verzeichnis der .Jar kopieren Java Basics - Anfänger-Themen 1
P Einen Ordner mit Dateien hochladen [FTP] Java Basics - Anfänger-Themen 2
agent47 Input/Output Ordner/Datei Rekutrsiv erstellen und Java Basics - Anfänger-Themen 8
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
D Ordner der Ausgeführten Datei erhalten Java Basics - Anfänger-Themen 4
P newbie- Frage zu Ordner-Projektstruktur Java Basics - Anfänger-Themen 3
L Herunterladbares Java Programm in bestimmten Ordner speicher Java Basics - Anfänger-Themen 3
M Input/Output Ordner erstelen? Java Basics - Anfänger-Themen 12
A Ordner zippen Java Basics - Anfänger-Themen 10
T .jar Datei als Ordner benutzen/ Dateien aus .jar Datei auslesen Java Basics - Anfänger-Themen 3
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
D Ordner auf Desktop erstellen(Pc unabhängig) Java Basics - Anfänger-Themen 3
M Neuen Ordner im Überverzeichnis erstellen, und dadrin arbeiten Java Basics - Anfänger-Themen 4
I Ordner schnell durchlesen Java Basics - Anfänger-Themen 11
I ZIP Archive erstellen - ich möchte aber nur den jeweiligen Ordner zippen, bekomme ganzen Pfad Java Basics - Anfänger-Themen 1
I Datei schreiben, im Klassen-Ordner Java Basics - Anfänger-Themen 15
P Dateien im Ordner auflisten. Java Basics - Anfänger-Themen 3
V bin und src Ordner Java Basics - Anfänger-Themen 3
M JFS- Ordner von faces-config.xml Java Basics - Anfänger-Themen 2
M JFileChooser Ordner auswählen Java Basics - Anfänger-Themen 5
C src-Ordner in jar-Datei (Eclipse) Java Basics - Anfänger-Themen 4
S Datei ausführen, verschiedene Ordner Java Basics - Anfänger-Themen 2
B Ordner leeren/löschen Java Basics - Anfänger-Themen 5
M Java-Datei in Ordner Kopieren Java Basics - Anfänger-Themen 12
X Wieso mehrere JRE ordner? Java Basics - Anfänger-Themen 8
N Kein Zugriff auf Ordner -> NullPointerException Java Basics - Anfänger-Themen 2
I Dateien in Ordner und Unterordner durchsuchen Java Basics - Anfänger-Themen 18
J Markierte Einträge (Dateien) in JList sollen in einen anderen Ordner verschoben werden. Java Basics - Anfänger-Themen 12
D Compiler-Fehler Klasse wird im selben Ordner nicht gefunden Java Basics - Anfänger-Themen 5
J Markierte Items in einer JLIST in einen Ordner verschieben Java Basics - Anfänger-Themen 2
S Bearbeiting von xml-Datei in src-Ordner möglich?i Java Basics - Anfänger-Themen 5
B res-Ordner für Text- und Bilddateien Java Basics - Anfänger-Themen 23
B Ordner in jar dateien einfügen Java Basics - Anfänger-Themen 4
M Java Eclipse IDE erstellt keinen Bin Ordner. Java Basics - Anfänger-Themen 10
F Kopieren von Ordner sammt inhalt Java Basics - Anfänger-Themen 5
V Ressourcen aus Ordner nutzen Java Basics - Anfänger-Themen 5
W Ordner "auslesen" Java Basics - Anfänger-Themen 18
R Aus jar Ordner lesen Java Basics - Anfänger-Themen 27
F Auf Ordner im selben Verzeichniss zugreifen Java Basics - Anfänger-Themen 3
K Input/Output Verschiedene Ordner für Java u.v.m. Projekte Java Basics - Anfänger-Themen 3
P Problem :Java-Dateien in einem Ordner ablegen Java Basics - Anfänger-Themen 10
S Ordner / Package Struktur bei größerem Projekt? Java Basics - Anfänger-Themen 8
O Erste Schritte Runnable Jar <- Ordner Fehlen Java Basics - Anfänger-Themen 6
D höchster ordner in zip datei Java Basics - Anfänger-Themen 14
J Ordner und Unterordner nach Dateien durchsuchen Java Basics - Anfänger-Themen 7
M Dateipfad: einen Ordner "hoch" Java Basics - Anfänger-Themen 11
M Input/Output Namen der Files aus einem Ordner MIT bestimmten Encoding auslesen? Java Basics - Anfänger-Themen 3
L Größe von Ordner wiedergeben Java Basics - Anfänger-Themen 4
M Applet soll Bilder aus Ordner lesen Java Basics - Anfänger-Themen 9
V .cab Dateien im Win Profil Ordner? Java Basics - Anfänger-Themen 5
eLogic Ordner kopieren/schreiben Java Basics - Anfänger-Themen 2
D Ordner in Eclipse Importieren Java Basics - Anfänger-Themen 6
F Ordner in JAR scannen Java Basics - Anfänger-Themen 3
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
P Kompelieren von 2 Java Dateien im selben Ordner Java Basics - Anfänger-Themen 13
V Datei in Ordner auslesen -> neuer Ordnername Java Basics - Anfänger-Themen 7
J Dateien aus Ordner auslesen bzw. einlesen Java Basics - Anfänger-Themen 4
G jar datei funktioniert nicht ohne jdom.jar im Ordner Java Basics - Anfänger-Themen 7
H Textdateien in Ordner einlesen - unendlich ? Java Basics - Anfänger-Themen 8
B Datei in mehrere Ordner splitten und wieder zusammenfuegen... Java Basics - Anfänger-Themen 3
B Ordner öffnen (eigener Dateibrowser) Java Basics - Anfänger-Themen 8
F Liste aller Ordner auf einem Laufwerk erstellen? Java Basics - Anfänger-Themen 3
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
S Betriebssystem - Ordner erstellen auf Windows & Linux Java Basics - Anfänger-Themen 3
BleedingSt4r Ordner + Unterordner "auslesen" ? Java Basics - Anfänger-Themen 32
S Ordner erstellen Problem Java Basics - Anfänger-Themen 4
S Ordner umbenennen mit renameTo - mysteriöses Problem Java Basics - Anfänger-Themen 9
M Ordner Download Java Basics - Anfänger-Themen 11
Developer_X Zugriff auf PC verweigert bei Ordner erstellung, wie zulassen?! Java Basics - Anfänger-Themen 3
Developer_X Java File listet den Ordner, in dem sich die Datei befindet Java Basics - Anfänger-Themen 7
P FTP Ordner löschen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben