2013-08-27 101 views
5

我有一個簡單的Java應用程序試圖通過WAN複製文件(從愛爾蘭到紐約)。FileUtils.copyFile失敗的大文件

我最近修改它爲使用FileUtils,因爲本機Java文件副本太慢了。我研究發現,因爲Fileutils使用NIO,它是更好的。文件複製現在工作很好,但有時我需要複製大型文件(> 200MB)和複製失敗,出現錯誤:

java.io.IOException: Failed to copy full contents from... 

我知道錯誤的意思是目標文件的大小是不一樣的來源,所以最初我認爲這是網絡問題。該過程會每隔幾個小時反覆嘗試複製文件,但它永遠不會成功。但是,當我通過Windows攻擊者手動複製文件時,它工作正常。這似乎排除了網絡......但我不確定。

我已經搜索,但無法找到具有完全相同問題的任何帖子。任何幫助將不勝感激。

謝謝!

增加:
我使用這個文件實用程序方法:

public static void copyFile(java.io.File srcFile, java.io.File destFile) throws java.io.IOException 
+0

'FileUtils'中有很多稱爲'copyFile'的方法。如果您添加一些代碼以顯示您正在做的事情,我們可以提供更多幫助。 –

+0

可能的重複http://stackoverflow.com/questions/15805303/copying-a-file-using-fileutils-copyfile –

+0

嗨,我看到了你提到的帖子,但這與文件鎖定有關。每次我複製文件時,它都有一個唯一的名稱,所以我沒有這個問題。 – Tony

回答

3

所以,我發現這個問題是在目標文件夾。有一個輪詢過程假設在複製後拾取文件。但是,該文件在複製完成之前正在移動。這可能不會發生在Windows驅動器上,因爲文件將被鎖定(我在本地進行了測試,並且在文件複製時我無法刪除)。但是,目標文件夾是安裝了一個celerra共享。引擎蓋下的unix進程是抓取文件的東西......我想它並不關心一些Windows進程是否仍在寫入文件。

感謝您的時間medPhys-pl!