Frage von Oukdouk, 47

JAVA: Alle pdf-Dateien aus einem Verzeichnis löschen, jedoch wird immer nur die letzte Datei gelöscht?

Hallo zusammen,

aktuell schreibe ich eine Anwendung die Dokumente, die auf dem ganzen Server verteilt liegen, kopiert und zusammen in ein Verzeichnis auf dem Desktop zieht. Dieses Verzeichnis wird anschließend gezippt. Nach dem das Verzeichnis als ZIP-Datei vorhanden ist, soll das ursprüngliche Verzeichnis wieder gelöscht werden.

Jetzt komme ich zu meinem Problem. Egal wieviele Dateien sich in dem Verzeichnis befinden... es wird immer nur die letzte Datei gelöscht. Woran kann das liegen?

PS integr = String mit dem Pfad zum Verzeichnis

File path = new File(integr);
                for (File file : path.listFiles()){
                    if(file.toString().endsWith(".pdf")){
                    file.delete();
                    System.out.println();
                    }                       
                }
            path.delete(); 
Expertenantwort
von KnusperPudding, Community-Experte für Java, 38

Ich habe mal dein Snippet ausprobiert. - Eigentlich hätte das funktionieren sollen.

Mein tipp wäre daher, lass dir mal ausgeben ob das löschen jeweils erfolgreich war:

System.out.print("Lösche Datei: " + file.getName() + "... ");
if (file.delete()) {
    System.out.println("Erfolg!");
} else {
    System.out.println("Fehler!");
}
Kommentar von Oukdouk ,

Es wird bei allen Dateien "Fehler!" ausgegeben. Bis auf die letzte eben. Ich vermute, dass an irgendeiner Stelle im Programm noch auf die anderen Dateien zugegriffen wird.

Gibt es eine Möglichkeit alle Streams, Reader, Writer usw. eben alles was darauf zugreifen könnte gleichzeitig zu closen? Ich finde den Fehler einfach nicht.

Kommentar von KnusperPudding ,

Verstehe, das scheint also dein Problem zu sein. 

Gibt es eine Möglichkeit alle Streams, Reader, Writer usw. eben alles was darauf zugreifen könnte gleichzeitig zu closen?

in den üblichen Fällen ist das immer innerhalb einer Methode: Das erstellen (dann lesen/schreiben) und das schließen eines Streams. - Eine Globale Methode zum schließen aller Streams auf einen schlag, die du eventuell nicht mal kennst, gibt es nicht.

Sofern du in deinem Code die Stelle nicht findest, kannst du auch hier gerne deinen Code posten.

Da die Codefunktion von GF leider sehr dürftig ist, rate ich dir für größere Beispiele den code via pastie.org / pastebin.com / etc.. bereit zu stellen.

Keine passende Antwort gefunden?

Fragen Sie die Community