6

我有一个简单的 Java 应用程序,它试图通过 WAN(从爱尔兰到纽约)复制文件。

我最近修改它以使用它,FileUtils因为本机 Java 文件副本太慢了。我研究发现,因为Fileutils使用 NIO 更好。文件副本现在效果很好,但有时我需要复制非常大的文件(> 200Mb)并且复制失败并出现错误:

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

我知道错误意味着目标文件大小与源文件大小不同,所以最初我认为这是网络问题。该过程每隔几个小时反复尝试复制文件,但从未成功。但是,当我通过 Windows 资源管理器手动复制文件时,它工作正常。这似乎排除了网络......但我不太确定。

我已经搜索但找不到任何具有完全相同问题的帖子。任何帮助将不胜感激。

谢谢!

另外:
我正在使用这个 FileUtils 方法:

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

1 回答 1

4

所以我发现问题出在目标文件夹上。有一个轮询过程假设在文件被复制后拾取文件。但是,文件在复制完成之前就被移动了。这可能不会在 Windows 驱动器上发生,因为该文件将被锁定(我在本地测试并且在文件复制时我无法删除)。但是,目标文件夹是已安装的 celerra 共享。引擎盖下的unix进程是抓取文件的东西......我想它并不关心某些Windows进程是否仍在写入它。

感谢您抽出宝贵时间 medPhys-pl!

于 2013-08-29T18:34:19.857 回答