我有一个文件,以.zip的形式发送,我想把它读入内存。拉链大约50 MB,解压约700MB。现在我想知道我是否应该首先解压缩文件然后阅读它,或者它是否没有区别,我可以直接从zip文件中读取数据。
如果是普通文件,请使用围绕InputStreamReader
的{{1}}。
对于zip文件,我使用FileInputStream
从java.util.ZipFile
获取InputStream
,然后再围绕ZipEntry
。{
所以最后我在两种情况下使用InputStreamReader
。
我试过测试它,但在本地我无法读取这么大的文件而不会耗尽内存。在进程运行的服务器上有更多进程干扰,所以我无法确定是否存在任何差异。
有人知道吗,如果其中一个选项使用的内存明显多于另一个选项,那么它只是一个设计问题,使用哪种方式?
问候, 乌韦
答案 0 :(得分:0)
唯一的区别是解压缩文件的性能很小。在这两种情况下,您的InputStreamReader
都将读取解压缩的700 MB文件。
您应该问的下一个问题是,为什么需要将这个大文件完全读入内存?真的有必要吗?也许你可以逐行处理它,而不需要在内存中保留所有行。