我有一个 Java 应用程序,它使用 URL
获取一个相对较小的 .zip
文件,将其保存在临时目录中,将其解压缩到本地计算机上并制作一些更改其中一个文件。这一切都很好。
但是,我通过 BufferedInputStream
以下列方式访问 .zip
文件:
Url url = "http://somedomain.com/file.zip";
InputStream is = new BufferedInputStream(url.openStream(), 1024);
我担心这个应用程序实际上将用于传输 very 大型 zip
文件,我想知道 BufferedInputStream
是否真的是最好的方法,或者我是否最终会抛出某种类型的 OutOfMemoryException
?
所以我的问题是,BufferedInputStream
是否适合这项工作,或者我应该以完全不同的方式来处理它?</p>
最佳答案
BufferedInputStream不会将所有文件加载到内存中,它仅使用内部缓冲区,在您的大小为 1024 字节 = 1kb 的情况下。它永远不会比这更大。如果您不打算同时拥有许多流,则实际上可以增加该值。
编辑:您正在考虑的可能是 ByteArrayOutputStream ,其中数据保存在内存中。
关于Java:处理输入流中的大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897174/