我已经在android中制作了一个应用程序,它允许用户压缩和解压缩文件,并使用包java.util.zip
。一切正常。速度,文件与目录一起被完全压缩和解压缩。唯一的问题是应用程序无法压缩/解压大文件(大于1GB)。Java压缩/解压缩大文件(> 1GB)
我相信问题是我的buffer
的大小。我见过的其他代码,其缓冲区的值是1024或2048或8192,但是我的缓冲区的值是根据所选文件的大小(为了使其灵活)。但是一旦用户选择了一个大文件(大小大于8位数字),那就是错误出现了。我在网上搜索,也在这个网站,但我找不到答案。我的问题是与此类似:
To Compress a big file in a ZIP with Java
谢谢你的未来帮助! :)
编辑:
感谢您的意见和解答。它确实帮了很大忙。我认为BUFFER
在压缩/解压缩在java意味着文件的大小,所以在我的程序中,我使缓冲区大小灵活(缓冲区大小=文件大小)。请有人解释缓冲区是如何工作的,所以我可以理解为什么BUFFER
具有固定值。同样对于我来说,为什么其他人会告诉我们,如果缓冲区大小为8k或更好,它会更好。非常感谢! :)
请发表您的代码 - 尤其是当你选择的缓冲区大小的部分。我怀疑你的缓冲区太大了。 – Polynomial
根据文件大小,不需要调整缓冲区大小。如果有的话,它需要调整以匹配它下面的I/O层。这是棘手的,可能不便携。只需要一个固定的缓冲区大小。 – Thilo
多项式,你的权利是我的情况。由于Thilo评论过的内容,我意识到我误解了'buffer'的功能。 +1给你们两个。所以这意味着一个缓冲区的固定值可以压缩/解压任何大小的文件?那么不同缓冲区大小的目的是什么? 1024,2048,8192等等? – John