2016-08-01 69 views
0

我一直在使用石英寫程序的批量系統,我發現一個問題,文件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());  
} 

我想從一個目錄中的文件移動到另一個目錄,但我不能刪除該文件在我的分析相同的過程中,我認爲該文件還沒有完成複製,然後運行file.delete(); 我的問題是,有沒有辦法等到文件完成複製後再運行file.delete? 感謝

+0

讀你的代碼,當'renameTo'調用*成功時,它看起來像進入'else'塊。所以,該文件不再存在於原來的位置。所以,你不能從原來的位置刪除它,因爲它已經不存在了。 –

+0

no renameTo在java中實際上覆制文件不移動文件多數民衆贊成爲什麼我想要刪除它時,它成功 –

+0

如果'File.renameTo'複製文件而不是重命名它,而不是你的平臺上有問題 - 它是不應該這樣做。同樣的問題也可能影響刪除操作。 –

回答

0

重命名幾乎是瞬間,因爲它不會複製該文件,它只是移動它出現在哪個目錄

(除非你的文件系統之間移動)在Windows上,你不能重命名或刪除如果你有文件打開的地方。確保你有close()編輯它。

+0

謝謝你回答@Peter Lawrey但我java.io.File沒有關閉()命令你有任何其他方式? –

+0

如果關閉文件是真正的問題,請嘗試查找一些'InputStream'(或'OutputStream'),'BufferedReader',這些東西可以用來讀/寫文件。 – Ephi

+0

@NoobatPrograming你在哪裏處理文件? –

0

我想我已經找到了問題,問題是當我在zip文件中插入一些其他代碼已經插入數據,所以它創建數據庫中的重複,它會創建一個這樣的錯誤。所以謝謝你回答這個問題