Hi,
ich möchte mehrere Datein verarbeiten, die sich auch in Unterverzeichnissen befinden können.
Daher muss ich das ganze dann mit einer rekursiven Funktion realisieren.
Die ganze Verarbeitung der Dateien habe ich dann mitten in die Rekusion gebaut und am Ende wurde das ganze unübersichtlich.
Daher habe ich mir überlegt, zuerst eine Dateiliste erstellen zu lassen, die alle Datensätze rekursiv sammelt und dann nacheinander abarbeitet.
Da ich nicht weiss wie viele Datensätze es sein werden, kann ein Array nicht verwendet werden. Daher habe ich mich entschieden eine ArrayList zu nehmen, an diese Datensätze angehangen werden können.
Meine Funktion "dateiListeMR" benötigt einen String Parameter mit dem Pfad des Quellverzeichnisses. Zurück gegeben wird dann eine ArrayList mit den gesammelten Dateien als File.
Die Funktion an sich arbeitet korrekt, denn ich erhalte genau 10 Datensätze, die sich in meinen Quellverzeichnis mit Unterverzeichnissen befinden.
Verwendet wird meine Funktion durch diesen Aufruf
Ein Problem scheint in der zurück gegebenen ArrayListe, in dem sich dann anscheinend nur 2 Dateien befinden. Und zwar sind das diese, die im root des Quellverzeichnisses sind.
Es fehlen alle Dateien in den Unterverzeichnissen.
Aber die ArrayList wurde vollständig erstellt. Innerhalb der Funktion wurde die ArrayListe ausgegeben und war mit 10 Datensätzen vollständig.
Nach der Übernahme der ArrayList habe ich die Datensätze nochmal zählen lassen und auch ausgegeben. Es waren dann nur noch 2 Datensätze??
Ich selbst kann den Fehler nicht finden und wäre für Hilfe Dankbar.
Vielen Dank
M
ich möchte mehrere Datein verarbeiten, die sich auch in Unterverzeichnissen befinden können.
Daher muss ich das ganze dann mit einer rekursiven Funktion realisieren.
Die ganze Verarbeitung der Dateien habe ich dann mitten in die Rekusion gebaut und am Ende wurde das ganze unübersichtlich.
Daher habe ich mir überlegt, zuerst eine Dateiliste erstellen zu lassen, die alle Datensätze rekursiv sammelt und dann nacheinander abarbeitet.
Da ich nicht weiss wie viele Datensätze es sein werden, kann ein Array nicht verwendet werden. Daher habe ich mich entschieden eine ArrayList zu nehmen, an diese Datensätze angehangen werden können.
Meine Funktion "dateiListeMR" benötigt einen String Parameter mit dem Pfad des Quellverzeichnisses. Zurück gegeben wird dann eine ArrayList mit den gesammelten Dateien als File.
Java:
// erstellt eine Dateiliste mit Rekursiver Verzeichnistiefe
public ArrayList dateiListeMR(String quellOrdner) {
//Dateipfad zum Quellverzeichnis erstellen
File pfad = new File(quellOrdner);
// File Array mit allen Dateien aus dem QuellVerzeichnis füllen
File[] normaleDateiListe = pfad.listFiles();
ArrayList<File> rekursiveDateiListe = new ArrayList<File>();
// Wenn das Verzeichnis nicht leer ist, dann Inhalt verarbeiten
if (normaleDateiListe != null) {
// Wenn die normaleDateiListe nicht leer ist, Einträge verarbeiten
// for earch Schleife, arbeitet jede Zeile des Arrays ab
for (File inhaltListe : normaleDateiListe) {
// Verarbeitet den Inhalt der Dateiliste
if (inhaltListe.isFile()) {
// Wenn der Inhalt eine Datei ist, an die rekursiveDateiListe anhängen
rekursiveDateiListe.add(inhaltListe);
} else {
// Wenn ein Verzeichnis, dann Rekursiver Funktionsaufruf
dateiListeMR(inhaltListe.toString());
} // Rekursiver Funktionsaufruf
} // Verarbeitet den Inhalt der Dateiliste
} // Wenn die Dateiliste nicht Leer ist
// Rekursive Dateiliste in der Konsole ausgeben
// for (int i = 0; i < rekursiveDateiListe.size(); i++)
// System.out.println(rekursiveDateiListe.get(i));
return rekursiveDateiListe;
} // dateiListeMR
Verwendet wird meine Funktion durch diesen Aufruf
Java:
ArrayList<File> dateiListe = new ArrayList<File>();
dateiListe = dateiObjekt.dateiListeMR(dateiObjekt.getQuellOrdner());
System.out.println("Anzahl der Datensätze in der Liste " + dateiListe.size());
for (int i = 0; i < dateiListe.size(); i++) {
System.out.println(dateiListe.get(i));
}
Es fehlen alle Dateien in den Unterverzeichnissen.
Aber die ArrayList wurde vollständig erstellt. Innerhalb der Funktion wurde die ArrayListe ausgegeben und war mit 10 Datensätzen vollständig.
Nach der Übernahme der ArrayList habe ich die Datensätze nochmal zählen lassen und auch ausgegeben. Es waren dann nur noch 2 Datensätze??
Ich selbst kann den Fehler nicht finden und wäre für Hilfe Dankbar.
Vielen Dank
M
Zuletzt bearbeitet: