gpt4 book ai didi

java - FileOutputStream 确实很慢

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

我正在从网络下载数据库,该数据库大小在 100 KB 到 500 KB 之间。这是我的代码(删除了无用的代码):

URLConnection uConnection = downloadUrl.openConnection();
InputStream iS = uConnection.getInputStream();
BufferedInputStream bIS = new BufferedInputStream(iS);
byte[] buffer = new byte[1024];
FileOutputStream fOS = new FileOutputStream(db);
int bufferLength = 0;
while ((bufferLength = bIS.read(buffer)) > 0) {
fOS.write(buffer, 0, bufferLength);
}
fOS.close();

我的问题是,他需要很长时间才能完成 while 语句。我是否在某处弄乱了代码?对于这么小的文件来说,应该不会花那么长时间,不是吗?我说的是 1 分钟,三个文件总共不超过 1 MB...提前致谢!

最佳答案

“慢”这个词确实比较模糊。话虽这么说,考虑到您想要做什么,您不应该使用 BufferedInputStream ,并且您的缓冲区太小了。

缓冲包装器用于优化小型读/写。由于您所做的只是尝试尽可能快地读取大量数据,因此您应该直接从 InputStream 读取数据,并使用大缓冲区(例如,64k,因为底层 native 代码无论如何,可能会以那个大小分块)。

byte[] buffer = new byte[65536];
...
while ((bufferLength = iS.read(buffer, 0, buffer.length) > 0) {
...

关于java - FileOutputStream 确实很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9241905/

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