Java 复制文件时出现无声错误

Java 复制文件时出现无声错误,java,filesystems,nio,Java,Filesystems,Nio,我有以下复制文件的方法: public static void nioCopy(File source, File destination) { FileInputStream fis = null; FileOutputStream fos = null; FileChannel input = null; FileChannel output = null; try { fis = new FileInputStream(source)

我有以下复制文件的方法:

public static void nioCopy(File source, File destination) {
    FileInputStream fis = null;
    FileOutputStream fos = null;
    FileChannel input = null;
    FileChannel output = null;
    try {
        fis = new FileInputStream(source);
        fos = new FileOutputStream(destination);

         input = fis.getChannel();
         output = fos.getChannel();

        input.transferTo(0, input.size(), output);

    } catch (FileNotFoundException ex) {
        Logger.getLogger(Utilities.class.getName()).log(Level.SEVERE, "Can't find either of input/output files.", ex);
    } catch (IOException ex) {
        Logger.getLogger(Utilities.class.getName()).log(Level.SEVERE, "Can't open either of input/output file for reading/writing", ex);
    } finally {
        try {
            fis.close();
            fos.close();
            input.close();
            output.close();
        } catch (IOException ex) {
            Logger.getLogger(Utilities.class.getName()).log(Level.SEVERE, "Error closing streams", ex);
        }

    }
}
我用它来复制文件,但有时会出现无声错误或未定义的行为,或者我不知道如何解释,这就是我得到的:

以下是我的资料来源:

-rw-r--r-- 1 nb9 team92 3.1G 2011-10-13 16:31 6443_6#5_1_6443_6#5_2.fastq.f.fq.gz
这里是目的地:

-rw-r--r-- 1 nb9 team92 2.0G 2011-10-13 16:49 6443_6#5_1_6443_6#5_2.fastq.f.fq.gz
在执行此过程时,我没有遇到任何异常,从外观上看,一切都应该成功,但当我开始解压缩文件时,我得到:

java.io.EOFException:ZLIB输入流意外结束

很明显,目的地比原来的目标低了1吉格


唯一的特点是,这两个文件都位于非常繁忙的lustre文件系统上。这可能会导致一些有趣的事情吗?

被截断为2Gb的事实让我怀疑。我搜索了一下,它看起来像是一个。也可能是目标文件系统允许最大2Gb文件

目前,缓冲区大小限制为2GB(整数中可以表示的最大正数)。计划为Java 7更新的缓冲区将允许大缓冲区(大小和索引保持为长)

不管怎样,我只是想确定一下:

  • 如果有空间,可以尝试将其复制到同一个文件系统上吗
  • 你能试试ApacheCommonsIO吗?看起来是的
  • 如果可以升级,请尝试使用Java 7,因为它已经过时了

尝试捕获一个
异常
并查看结果,因为到目前为止,任何不是
文件NotFoundException
IOException
的错误都将是无声的。此外,
传输到
有一个返回值。请检查它。问题:您确定目标文件系统可以处理大于2GB的文件吗o我试图
cp
将一个大文件复制到fat32 FS,但复制没有完成,但我没有得到任何错误。是的,它确实支持它们,因为正如我所说的,它是一个lustre文件系统,是在考虑到这一点的情况下创建的。我有一个8gig的文件愉快地驻留在itI上。我刚刚查看了FileUtils.CopyFile的源代码,它看起来非常健壮。我我试试看这个问题是否仍然存在。