Umbenennen einer Datei ohne Verwendung von renameTo() - Java
Missachtung meinem letzten post habe ich gefunden, dass die Quelle des Problems. Ich bin mit
a.renameTo(b)
wenn b nicht vorhanden ist. Der Grund, warum es nicht vorhanden ist, weil es ein symbolischer link ist, so ist b /usr/name/folder/file
, dann b ist wirklich /mnt/MountTest
weil der symlink auf das Verzeichnis.
Die Frage ist also, gibt es eine alternative Möglichkeit zum umbenennen einer Datei in Java mit einem string-Wert?
Wenn nicht, wie kann man diese umbenennen Verfahren anders gemacht werden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Umbenennen umbenennen würde es... wenn es auf dem gleichen Dateisystem.
Wenn ein renameTo() fehlschlägt, müssen Sie die Kopie an der neuen Stelle, dann das original löschen.
Umbenennen von Dateien ist auch sehr problematisch, über Datei-Systeme. Sehen http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4073756. Kommentatoren der bug-report gepostet, einige Beispiel-code und wies auch darauf hin, dass Sie verwenden können, Verarbeiten.exec. Sowohl Apache Commons IO und Google Guava haben Dienstprogramme, die für ein Sicheres verschieben von Dateien sowie:
Ich glaube, Sie sind verwirrend Dinge. Java.util.Datei nicht darstellen, eine Datei auf einem Dateisystem. Es stellt einen Pfad zu einer Datei.
Das problem ist nicht, dass ein symlink ist beteiligt; das problem ist, dass Sie nicht atomar umbenennen über Dateisysteme. Das meta-problem ist, dass die Java-Datei-Operationen sind schlecht konzipiert, und werfen Sie keine richtigen Ausnahmen, und keine Fehlercodes, wenn etwas nicht funktioniert!
Wie etwa: