Wenn ich versuche, eine auf dem Tomcat-Server vorhandene Datei conf/Catalina/localhost aus Java-Code zu löschen, gibt file.delete () immer false zurück. Wenn ich jedoch die Datei mit der Funktion file.exists () überprüfe, wird true zurückgegeben. Ich bekomme keine Ausnahme. Bitte helfen Sie uns, warum dies geschieht. Was ist die Lösung dafür?
Wenn ich versuche, eine Datei zu löschen, die auf dem Tomcat-Server vorhanden ist conf/Catalina/localhost aus Java-Code, dann file.delete () immer gibt falsch zurück Aber wenn ich die Datei durch file.exists () prüfe, funktion es gibt wahr zurück.
Höchstwahrscheinlich haben Sie keine Berechtigung , um Dateien auf dem Server zu löschen. Überprüfen Sie Ihre Berechtigungen.
f.delete()
gibt false zurück. Dies bedeutet, dass es nicht gelöscht werden konnte/konnte und f.exists()
true zurückgibt, sodass die Datei vorhanden ist, aber nicht gelöscht werden kann.
Es gibt verschiedene Gründe, warum eine Datei nicht gelöscht werden kann. Es ist möglicherweise nicht vorhanden, es kann sich um ein nicht leeres Verzeichnis handeln, möglicherweise haben Sie nicht alle Ressourcen geschlossen, in denen es verwendet wurde, und Ihr Programm hat möglicherweise keine Berechtigung dazu, nur einige zu nennen.
Leider liefert die File.delete()
- Methode nur sehr wenig Informationen darüber, warum; Es liegt ziemlich an Ihnen, sich umzudrehen und es herauszufinden. Aber es gibt gute Nachrichten. Sie möchten File
nicht an erster Stelle verwenden.
In Java 7 wurde das neue Paket Java.nio.file
eingeführt, das eine wesentlich robustere Dateizugriffs-API darstellt. Es liefert das Konzept einer abstrakten Path
und unterteilt konkrete Operationen in die Files
Klasse, insbesondere die Files.delete()
, die dokumentiert ist, um klare Ausnahmen zu erzeugen, die die Gründe für das Löschen beschreiben.
Verwenden Sie Path
und Files
; du wirst es nicht bereuen.
Sie müssen den Stream schließen, bevor Sie ihn löschen.
z.B -
fileInputStream.close();
file.delete();
Wenn das Verzeichnis nicht leer ist, gibt die File.delete()
-Methode false zurück, ohne einen Fehler auszulösen.
Sie müssen das Verzeichnis bereinigen, bevor Sie es löschen.
Das bedeutet, dass eine Datei vorhanden ist, aber Ihr Java-Prozess hat nicht die Berechtigung, diese zu löschen. Deshalb gibt die Löschfunktion den Wert false zurück
Returns:
true if and only if the file or directory is successfully deleted; false otherwise