2016-08-01 10 views
0

Ich habe ein Programm für Batch-System unter Verwendung von Quarz zu schreiben, und ich finde ein Problem,Datei renameTo & File.delete

if(!file.renameTo(new File(PATH_FILE_PROCESSED+file.getName())))System.out.println("Cannot Move File :"+file.getAbsolutePath()); 
else{ 
    if(!file.delete())System.out.println("Cannot Delete File :"+file.getAbsolutePath());  
} 

i-Datei aus einem Verzeichnis in ein anderes Verzeichnis verschieben möchten, aber ich kann nicht löschen die Datei im selben Prozess, von meiner Analyse ich denke, die Datei nicht fertig kopiert haben dann die Datei.delete(); meine Frage ist, gibt es eine Möglichkeit zu warten, bis die Datei fertig kopiert, dann führen Sie die Datei.delete? dank

+0

Lesen Sie Ihren Code, es sieht aus wie Sie in den 'else' Block gehen, wenn der' renameTo' Aufruf * erfolgreich *. Die Datei existiert also nicht mehr am ursprünglichen Speicherort. Sie können es also nicht von seinem ursprünglichen Speicherort löschen, da es nicht mehr vorhanden ist. –

+0

nein renameTo in Java tatsächlich Kopieren der Datei nicht Verschieben der Datei das ist, warum ich löschen möchte, wenn es erfolgreich ist –

+0

Wenn 'File.renameTo' kopiert die Datei auf Ihrem Computer, anstatt es umzubenennen, als Sie ein Problem auf Ihrer Plattform haben das sollte ich nicht tun. Dasselbe Problem kann sich auch auf den Löschvorgang auswirken. –

Antwort

0

Umbenennung fast sofortige ist, wie es die Datei nicht kopieren, es bewegt sich nur das Verzeichnis erscheint es in (es sei denn, Sie zwischen Dateisystemen bewegen)

Unter Windows können Sie nicht umbenennen oder löschen, wenn Sie haben die Datei irgendwo geöffnet. Stellen Sie sicher, dass Sie close() ed es richtig gemacht haben.

+0

danke für die Beantwortung @Peter Lawrey, aber ich habe java.io.File nicht close() -Befehl hast du einen anderen Weg? –

+0

Wenn das Schließen der Datei das eigentliche Problem ist, versuchen Sie, nach 'InputStream's (oder' OutputStream'), 'BufferedReader' zu suchen, Dinge, die Sie zum Lesen/Schreiben der Datei hätten verwenden können. – Ephi

+0

@NoobatProgramming Wo bearbeiten Sie die Dateien? –

0

Ich denke, ich habe bereits das Problem gefunden, das Problem ist, wenn ich die Datei in zip einfügen einige andere Code bereits die Daten einfügen, so erstellen Sie in der Datenbank und erstellen Sie einen Fehler wie folgt. Also vielen Dank für die Beantwortung der Frage