2013-05-14 9 views
6

Wie kann ich überprüfen, dass ich eine Datei in Java löschen kann?Wie überprüfe ich, ob ich eine Datei löschen kann?

Zum Beispiel habe ich sollte der Lage sein, Datei zu löschen C:/file.txt aber ich nie die C:/ oder Computer löschen können, oder My Documents usw.

Lösung in possible duplicate beschrieben ist, für mich nicht.

+0

* "Lösung in möglich Duplikat beschrieben funktioniert nicht für mich. "* Bitte erklären warum? –

+0

@Marco Forberg Manchmal gibt es eine Ausnahme "Zugriff verweigert" für normale Dateien wie 'C:/file.txt'. – SeniorJD

Antwort

10

Das Entfernen der Datei erfordert Schreibberechtigung für das übergeordnete Element der Datei, d. H. Das Verzeichnis, in dem die Datei gespeichert ist. Verzeichnis in Java wird auch durch Instanz der Klasse java.io.File mit der Methode canWrite() dargestellt.

Um zu überprüfen, ob die Datei gelöscht werden kann, sollten Sie file.getParent().canWrite() anrufen.

+0

Es funktioniert für mich, danke! – SeniorJD

+0

Alle Kredite an meinen Kollegen @ arn0n – AlexR

+3

+1 ausgezeichnete Lösung, aber es ist tatsächlich 'file.getParentFile(). CanWrite()'. –

3

Auf meinem Windows 7 64-Bit-Feld NTFS und Java 7 (Oracle JDK) verwendet wird, das einzige, was ist zuverlässig für mich gearbeitet

boolean canDelete = file.renameTo(file) 

Dies ist überraschend einfach und funktioniert auch für Ordner, die "haben irgendwo unter "einer" offenen "oder" gesperrten "Datei.

Andere Dinge, die ich versucht und produziert falsch-positive Ergebnisse. Aquire eine FileLock, Dateinr CanWrite Dateinr setLastModified ("touch"), file.getParent() CanWrite()

+0

Es sollte beachtet werden, dass das Verhalten dieser Funktion plattformabhängig ist. – colti