【发布时间】:2013-08-27 13:36:15
【问题描述】:
我有一个简单的 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
【问题讨论】:
-
FileUtils中有许多方法称为copyFile。如果您添加一些代码以准确显示您在做什么,我们可以提供更多帮助。 -
嗨,我看到了你提到的帖子,但这与文件锁定有关。每次我复制文件时,它都有一个唯一的名称,所以我没有这个问题。
-
文件是否可能在您复制时发生变化?您使用的是什么版本的 Apache IO?
-
嗨,我正在使用 Commons IO 2.4。不,文件一旦创建就不会更改。应用程序创建文件,用时间戳命名,然后尝试复制它。它每 2 小时运行一次,因此下次它会有一个新的文件名。另请注意,较小的文件没有问题。这仅在进程碰巧创建大文件时偶尔发生。谢谢!
标签: java large-files ioerror fileutils