webentwicklung-frage-antwort-db.com.de

java file.delete () gibt false zurück, file.exists () gibt true zurück

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?

15
vishal

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.

15
Simon Dorociak

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.

11
dimo414

Sie müssen den Stream schließen, bevor Sie ihn löschen.

z.B - 

fileInputStream.close();
file.delete();
5
vsharma

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.

3
Akshay Shinde

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

0
Renjith