我已經在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