gpt4 book ai didi

java - 缓冲输入流无法正确加载文件

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

我有以下代码来下载文件列表。下载后,我将在线文件的 md5 与下载的进行比较。当下载大小低于 1024 字节时,它们类似。对于超过 1024 字节的所有内容,都有不同的 md5 和。

现在我不知道原因。我想,这取决于1024字节的Array-Size?也许每次都会将完整的 1024 字节写入文件,但问题是,为什么它可以处理小于 1kb 的文件?

 String fileUrl= url_str;
URL url = new URL(fileUrl);
BufferedInputStream bufferedInputStream = new BufferedInputStream(url.openStream());
FileOutputStream fileOutputStream =new FileOutputStream(target);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream, 1024);

byte data[] = new byte[1024];
while(bufferedInputStream.read(data, 0, 1024) >0 )
{
bufferedOutputStream.write(data);
}
bufferedOutputStream.close();
bufferedInputStream.close();

最佳答案

这已损坏:

while(bufferedInputStream.read(data, 0, 1024) >0 )
{
bufferedOutputStream.write(data);
}

您假设每个读取调用都会填满整个缓冲区。您应该使用read的返回值:

int bytesRead;
while((bytesRead = bufferedInputStream.read(data, 0, 1024)) >0 )
{
bufferedOutputStream.write(data, 0, bytesRead);
}

(此外,您应该在 finally block 中关闭所有流,但这是另一回事。)

关于java - 缓冲输入流无法正确加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14910380/

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