2013-08-27 100 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!