【发布时间】:2012-06-19 19:49:27
【问题描述】:
我在 android 中创建了一个应用程序,允许用户压缩和解压缩文件,我使用了包 java.util.zip。一切正常。速度,文件与目录一起完全压缩和解压缩。唯一的问题是应用程序无法压缩/解压缩大文件(大于 1gb)。
我认为问题在于我的buffer 的大小。我见过的其他代码,其缓冲区的值为 1024 或 2048 或 8192,但我的缓冲区值基于所选文件的大小(只是为了使其灵活)。但是一旦用户选择了一个大文件(大小超过 8 位),就会出现错误。我在网上搜索过,也在这个网站上搜索过,但我找不到答案。我的问题与此类似:
To Compress a big file in a ZIP with Java
感谢您以后的帮助! :)
编辑:
感谢 cmets 和答案。它真的帮了很多忙。我认为 BUFFER 在 java 中的压缩/解压缩意味着文件的大小,所以在我的程序中,我使缓冲区大小变得灵活(缓冲区大小 = 文件大小)。有人能解释一下缓冲区是如何工作的,这样我就可以理解为什么BUFFER 有一个固定值是可以的。我也想弄清楚为什么其他人说如果缓冲区大小为 8k 或其他情况会好得多。非常感谢! :)
【问题讨论】:
-
请发布您的代码 - 特别是您选择缓冲区大小的部分。我怀疑你的缓冲区最终太大了。
-
无需根据文件大小调整缓冲区大小。如果有的话,它需要调整以匹配它下面的 I/O 层。这很棘手,可能不便携。只要有一个固定的缓冲区大小。
-
多项式,你的权利就是我的情况。由于 Thilo 的评论,我意识到我误解了
buffer的功能。对你们俩+1。所以这意味着缓冲区的固定值可以压缩/解压缩任何大小的文件?那么不同缓冲区大小的目的是什么? 1024、2048、8192等等?
标签: java android file compression