Java:处理输入流中的大文件

标签 java zip large-files file-transfer

我有一个 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/

相关文章:

c# - 如何从 MemoryStream 重新创建 Zip 文件

c - 只需要写一个大文件就需要 O_LARGEFILE 吗?

php - 如何使用 PHP 在大文件中查找文本?

linux - 如何在不解压缩的情况下列出 zip 存档中的文件?

java - 与 Btree 算法作斗争

java - 打印每行有 10 个元素的数组元素

java - HBase-创建表时出错

java - 可以在其他程序上打开的文件的 ZipException

c++ - 像 iostream 这样的大型包含文件是否有效? (C++)

java - 接口(interface) Java 1.8 中的具体方法