我有一个文件,以.zip格式提供,我想将其读入内存。压缩大约50 MB,解压缩大约700 MB。现在我想知道如果我应该先解压缩文件然后再读取它,或者它没有任何区别,我可以直接从zip文件中读取数据。将压缩文件和解压缩文件读取到内存中
在正常文件的情况下,我使用围绕FileInputStream
的InputStreamReader
。
对于zip文件,我使用java.util.ZipFile
从ZipEntry
获取InputStream
,然后再围绕它包装InputStreamReader
。
所以最后我在两种情况下都与InputStreamReader
一起工作。
我试图测试它,但本地我无法读取这样一个大文件而不会耗尽内存。在进程运行的服务器上有更多的进程干扰,所以我无法确定是否有任何区别。
有没有人知道,如果其中一个选项使用的内存明显多于另一个,那么它只是一个设计问题,使用哪种方式?
问候, 乌韦
你对解压缩数据做什么?该zipfile有多少条目? – wero
这是您自己机器上的一次性工作,而不是生产工作上的常规工作吗? –
我们确实需要知道您需要如何处理数据。您可以在读取时对其进行过滤,只需要在内存中保存一个小缓冲区和结果 - 或者您可以找到在磁盘上处理它的方法。应始终避免把它全部留在记忆中 - 除非这是一次性的。 –