读取压缩文件和解压缩文件到内存中

时间:2016-02-08 11:12:23

标签: java memory

我有一个文件,以.zip的形式发送,我想把它读入内存。拉链大约50 MB,解压约700MB。现在我想知道我是否应该首先解压缩文件然后阅读它,或者它是否没有区别,我可以直接从zip文件中读取数据。

如果是普通文件,请使用围绕InputStreamReader的{​​{1}}。
对于zip文件,我使用FileInputStreamjava.util.ZipFile获取InputStream,然后再围绕ZipEntry。{ 所以最后我在两种情况下使用InputStreamReader

我试过测试它,但在本地我无法读取这么大的文件而不会耗尽内存。在进程运行的服务器上有更多进程干扰,所以我无法确定是否存在任何差异。

有人知道吗,如果其中一个选项使用的内存明显多于另一个选项,那么它只是一个设计问题,使用哪种方式?

问候, 乌韦

1 个答案:

答案 0 :(得分:0)

唯一的区别是解压缩文件的性能很小。在这两种情况下,您的InputStreamReader都将读取解压缩的700 MB文件。

您应该问的下一个问题是,为什么需要将这个大文件完全读入内存?真的有必要吗?也许你可以逐行处理它,而不需要在内存中保留所有行。