gpt4 book ai didi

java - 合并文件时BufferOutputStream写入零字节

转载 作者:行者123 更新时间:2023-12-01 15:17:09 25 4
gpt4 key购买 nike

我正在尝试将n个文件合并为单个文件。但我的功能出现了奇怪的行为。该函数在 n 秒内被调用 x 次。假设我有 100 个要合并的文件,每秒我调用 5 个文件并合并它。下一秒,数量翻倍为 10,但从 1-5 是与之前相同的文件,其余的是新文件。它工作正常,但在某些时候,它给出零字节或有时给出正确的大小。

你能帮我找出下面函数中的错误吗?

public void mergeFile(list<String> fileList, int x) {
int count = 0;
BufferedOutputStream out = null;
try {
out = new BufferedOutputStream(new FileOutputStream("Test.doc"));
for (String file : fileList) {
InputStream in = new BufferedInputStream(new FileInputStream(file));
byte[] buff = new byte[1024];
in.read(buff);
out.write(buff);
in.close();
count++;
if (count == x) {
break;
}
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

*抱歉我的英语不好

最佳答案

in.read(buff);

检查Javadoc 。该方法不能保证填充缓冲区。它返回一个值,告诉您它读取了多少字节。您应该使用它,在这种情况下,您应该在决定要写入多少字节(如果有)时使用它。

关于java - 合并文件时BufferOutputStream写入零字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467867/

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