gpt4 book ai didi

java - 复制文件时出现静默错误

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:11 25 4
gpt4 key购买 nike

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

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 gig。

唯一的特点是这两个文件都在一个非常繁忙的 lustre 文件系统上,这可能是在做一些有趣的事情吗?

最佳答案

在 2Gb 处被截断的事实让我产生了怀疑。我搜索了一下,它看起来像 issue with nio .也可能是目标文件系统允许最大 2Gb 文件。

来自 Java NIO: Buffers

At present, buffer sizes are limited to 2GB (the maximum positive number that can be represented in an int. An updated planned for Java 7 will allow large buffers (with the size and indexes held as a long).

无论如何,只是为了确定:

  • 如果你有空间,你能试着把它复制到同一个文件系统上吗?
  • 你能试试 Apache Commons IO FileUtils.copyFile() ?似乎他们 fixed this issue .
  • 如果可以升级,请尝试使用 Java 7,因为它已经发布了

关于java - 复制文件时出现静默错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com