Heim > Java > javaLernprogramm > Warum schlägt „file.delete()' trotz Prüfung der Dateizugänglichkeit fehl?

Warum schlägt „file.delete()' trotz Prüfung der Dateizugänglichkeit fehl?

Mary-Kate Olsen
Freigeben: 2024-11-04 07:59:02
Original
471 Leute haben es durchsucht

Why Does `file.delete()` Fail Despite File Accessibility Checks?

Löschungsfehler trotz Überprüfung der Dateizugänglichkeit beheben

Bei dem Versuch, eine Datei zu löschen, nachdem FileOutputStream zum Schreiben von Inhalten verwendet wurde, gibt die Methode file.delete() trotz Überprüfung „false“ zurück Dateiexistenz und -zugänglichkeit über file.exists(), file.canRead(), file.canWrite() und file.canExecute(). Dieses Verhalten kann auf einen besonderen Fehler in Java zurückgeführt werden.

Die Methode writeContent() wird korrekt verwendet, um Inhalte in die Datei zu schreiben und den Stream zu schließen. Der Versuch, eine Datei zu löschen, schlägt jedoch fehl, da ein Verweis auf die Datei durch die Java Virtual Machine (JVM) bestehen bleibt. Um dieses Problem zu beheben, muss System.gc() vor dem Löschversuch aufgerufen werden. Dadurch wird die JVM gezwungen, eine Garbage Collection durchzuführen, den Verweis auf die Datei freizugeben und deren Löschung zu ermöglichen.

Der überarbeitete Code mit hinzugefügtem System.gc() umfasst Folgendes:

finally
{
    try
    {
        in.close();
        in = null;
        out.flush();
        out.close();
        out = null;
        System.gc();
    }
    catch (IOException e)
    {
        logger.error(e.getMessage());
        e.printStackTrace();
    }
}
Nach dem Login kopieren

Durch Aufrufen von System .gc() im final-Block wird der Verweis auf die Datei entfernt, sodass file.delete() die Datei erfolgreich löschen kann.

Das obige ist der detaillierte Inhalt vonWarum schlägt „file.delete()' trotz Prüfung der Dateizugänglichkeit fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage