seit heute mache ich meine ersten Versuche mit Dateien verschieben in Java.
Könnt ihr CodeFehler erkennen?
Quelle und Ziel sind auf dem gleich Laufwerk.
Die Datei wird leider nicht verschoben.
Code:
File quelle = new File(fileName);
File ziel = new File("D:\\Pics");
boolean ok = quelle.renameTo(ziel);
if(!ok) {
System.err.println("Du kommst hier nicht rein!");
}
Entweder hast du die Datei selbst mit Java offen (irgendnen reader, etc ohne closed) oder du hast die Datei mit nem anderen Programm offen!
Windows ist so gut/schlecht das es geöffnete Dateien nicht verschieben, löschen lässt. Was hingegen bei Linux (mac os?!) nicht der Fall ist!
Ich empfehle dir das Programm "unlocker" mit dem man sehen kann, welcher Prozess die Datei gerade offen hat und man kann damit den "Schreibschutz" aufheben.
Soweit ich weiß kannst du mit renameTo die Datei wirklich nur umbenennen und nicht verschieben:
Aus der renameTo Beschreibung:
Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.
Also ein Bekannter von mir verschiebt tagtäglich die Dateien mit renameTO!
Und renameTO ist sogar schneller als kopieren, da das über das jeweilige FS anders implementiert ist und im best case nur eine Abänderung eines Index bedeutet
Soweit ich weiß kannst du mit renameTo die Datei wirklich nur umbenennen und nicht verschieben:
Aus der renameTo Beschreibung:
Many aspects of the behavior of this method are inherently platform-dependent: The rename operation might not be able to move a file from one filesystem to another, it might not be atomic, and it might not succeed if a file with the destination abstract pathname already exists. The return value should always be checked to make sure that the rename operation was successful.
Das bedeutet doch, es funktioniert nicht, wenn die Datei bereits vorhanden ist! Was ja nachvollziehbar ist.
Oder verstehe ich es falsch?
thE_29 hat gesagt.:
Also ein Bekannter von mir verschiebt tagtäglich die Dateien mit renameTO!
Und renameTO ist sogar schneller als kopieren, da das über das jeweilige FS anders implementiert ist und im best case nur eine Abänderung eines Index bedeutet :wink:
Könnte es sein, dass du versuchst die Datei von einer Partition in eine andere zu verschieben?
Das wäre in ein anderes Dateisystem, und das könnte nicht funktionieren.
ich finde es einfach klasse wie ihr euch ins Zeug legt. Danke für euren Einsatz. Hut ab. :toll: :applaus:
Es ist mir zwar sehr peinlich aber fairerweise und bevor ihr euch "vergebens" gedanken macht muss ich es gestehen:
hier der Codeteil:
Code:
if (dateiList.size() > 1) {
System.out.println("Es wurden folgende " + dateiList.size()
+ " Dateien mit dem selben Namensinhalt "
+ dateiNameGesamt + " im Verzeichnis gefunden: \n");
for (String fileName : dateiList) {
System.out.println("Die Datei " + fileName + " wird verschoben");
File quelle = new File(fileName);
File ziel = new File("D:\\Pics");
boolean ok = quelle.renameTo(ziel);
if(!ok) {
System.err.println("Du kommst hier nicht rein!");
}
}
}
Einen String in ein Verzeichnis zu verschieben dürfte etwas schwierig werden.
Manchmal ist es doch besser, dass man die Arbeit sein lässt, wenn es nicht mehr weiter geht!!! :roll:
Und am nächsten Tag sieht man die Welt mit anderen Augen. :shock: