gpt4 book ai didi

Java:使用 BufferedInputStream、BufferedOutputStream 下载问题

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

使用以下代码从互联网下载 rar 文件时,下载的文件比实际大小大。不确定是什么原因造成的?

        bis = new BufferedInputStream(urlConn.getInputStream());
bos = new BufferedOutputStream(new FileOutputStream(outputFile));

eventBus.fireEvent(this, new DownloadStartedEvent(item));

int read;
byte[] buffer = new byte[2048];
while ((read = bis.read(buffer)) != -1) {
bos.write(buffer);
}

eventBus.fireEvent(this, new DownloadCompletedEvent(item));

最佳答案

每次写入时,您都会向输出写入一个完整的缓冲区,即使 read(byte[]) 操作没有完全填满它。

此外,由于您已经在读入 byte[],缓冲流只会产生适得其反的开销。将缓冲流与单字节 read()write() 方法结合使用。

这是一个可以遵循的更好的模式。

InputStream is = urlConn.getInputStream();
try {
FileOutputStream os = new FileOutputStream(outputFile);
try {
byte[] buffer = new byte[2048];
while (true) {
int n = is.read(buffer);
if (n < 0)
break;
os.write(buffer, 0, n);
}
os.flush();
} finally {
os.close();
}
} finally {
is.close();
}

关于Java:使用 BufferedInputStream、BufferedOutputStream 下载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701305/

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