Hallo,
ich lösche Verzeichnisse rekursiv und unter mir unbekannten Umständen kann eine Datei nicht gelöscht werden. Die zu löschenden Dateien wurden aber im selben Programm erst erstellt. Es gibt also keine äußeren Zugriffe auf diese Dateien.
Sobald ich das Programm im DEBUG-Modus ausführe (Eclipse IDE), werden alle Dateien und Verzeichnisse problemlos gelöscht. Das klappt auch, wenn ich den Pfad verkürze, in dem diese Dateien liegen.
Es ist für mich also nicht nachvollziehbar, ob es nun an zu langen Pfadnamen liegt, oder ob es irgendwas mit der Art und Weise zu tun hat, mit der das Programm gestartet wird (DEBUG oder Normal). Die betreffende Datei kann gelesen und geschrieben werden (canRead, canWrite == true).
Hier ist der Code, der nur Dateien mit neuerem Zeitstempel löscht:
ich lösche Verzeichnisse rekursiv und unter mir unbekannten Umständen kann eine Datei nicht gelöscht werden. Die zu löschenden Dateien wurden aber im selben Programm erst erstellt. Es gibt also keine äußeren Zugriffe auf diese Dateien.
Sobald ich das Programm im DEBUG-Modus ausführe (Eclipse IDE), werden alle Dateien und Verzeichnisse problemlos gelöscht. Das klappt auch, wenn ich den Pfad verkürze, in dem diese Dateien liegen.
Es ist für mich also nicht nachvollziehbar, ob es nun an zu langen Pfadnamen liegt, oder ob es irgendwas mit der Art und Weise zu tun hat, mit der das Programm gestartet wird (DEBUG oder Normal). Die betreffende Datei kann gelesen und geschrieben werden (canRead, canWrite == true).
Hier ist der Code, der nur Dateien mit neuerem Zeitstempel löscht:
Code:
private void deleteTree(File path, long notOlderThan)
throws Exception {
File[] files = path.listFiles();
for (int index = 0; index < files.length; index++) {
if (files[index].isDirectory()) {
deleteTree(files[index], notOlderThan);
} else {
if ((files[index].lastModified() - notOlderThan) >= 0) {
boolean success = files[index].getCanonicalFile().delete();
if (!success) {
System.out.println("Could not delete file: "
+ files[index]);
if (this.failOnTempDirDeletionErrors) {
throw new Exception("Could not delete file: "
+ files[index]);
}
}
}
}
}
path.getCanonicalFile().delete();
}