Kraft Löschen aller Dateien in einem Ordner
Ich habe mit einem bestimmten Stück code zum löschen von Dateien aus einem Ordner, aber es erweist sich als sehr problematisch, weil ich vielleicht vergessen habe zu schließen, einen InputStream oder zwei. Der code, den ich habe, ist so groß, dass ich nicht in der Lage, um zu sehen, alle Inputstreams, dass habe ich nicht geschlossen. Gibt es eine Möglichkeit das löschen von Dateien, ob es einen InputStream öffnen oder nicht?
Dies ist der Teil des Codes, die ich verwende;
File fin = new File("C:/ABC Statements final/");
File[] finlist = fin.listFiles();
for (int n = 0; n < finlist.length; n++) {
if (finlist[n].isFile()) {
System.gc();
Thread.sleep(2000);
finlist[n].delete();
}
}
Habe ich bearbeitet den code. Diese version funktioniert.
- Ich würde vorschlagen, dass die kurze Antwort ist Nein. Sie sollte sich um dich kümmert streams besser.
- Dann sollte ich sagen, dass ich gegangen durch Alle Inpustream Es ist in den code, und ich geschlossen haben, um die ganze Menge von Ihnen, Aber ich habe immer noch den gleichen Fehler
- 2 Gedanken. Einige ein, einige von denen halten sich ein "Datei öffnen" &/oder es gibt ein Problem mit Berechtigungen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine InputStream-Instanzen in den bereitgestellten code.
Nicht zu schreiben viele ungetestete IO-code, bitte werfen Sie einen Blick auf die apache.Unterhaus.io Projekt. Vor allem bei der FileDeleteStrategy - Klasse für Datei-löschen von Operationen.
Dein code könnte dann so Aussehen:
delete
Methode mitdeleteQuietly
ein. In diesem Fall ist falls eine Datei nicht gelöscht werden konnte, keine Ausnahme geworfen wird..System.gc()
und die bit -Thread.sleep
und die Dateien werden immer gelöscht. Danke Mann.Können Sie verwenden:
vom Apache Commons
cleanDirectory()
da es sagt, dass es nicht löschen Sie das Verzeichnis. Allerdings bin ich mir nicht 100% sicher, was "reinigen" bedeutet.Mit Apache-Commons-IO:
Keine Notwendigkeit zu prüfen, für die Ausnahmen von dieser Weg.
Verwenden:
Docs:
Um es zu benutzen müssen Sie eine Abhängigkeit:
Maven:
Gradle: