要解壓縮zip文件我用從包java.util.zip *類由闖民宅this,它工作正常不過解壓40MB的文件需要59秒。當我試圖在iPhone的項目同一個zip文件(我們正在開發應用兩個平臺 - Android電子& IPONE &有功能解壓壓縮文件&保存未壓縮的內容到SD卡,Android或文檔目錄 - iPhone),僅需14秒。 iphone應用程序使用ziparchive。如何解壓大zip文件讀寫到SD卡在更短的時間
所以我的問題是:
1,從上述實驗中它會清除解壓&文件的寫操作在Java中的SD卡會消耗更多的時間比iPhone應用程序的,所以我決定用C/C++級解壓&文件寫操作使用NDK。 這是正確的選擇嗎?
2.我已經在谷歌搜索,計算器&一些建議使用minizip,但沒有足夠的幫助如何在Android中使用minizip。 anyboday是否嘗試過android的minizip?
3.我也試過NDK開發的libz達到我的目標,因爲Libz是在NDK中添加的,但沒有得到如何使用它。有沒有人試過NDK中的libz?
4.是否有任何其他框架在Java或C/C++中解壓縮大型zip文件&在較短時間內將它們寫入SDCARD?
請幫幫我。
這裏是我的Java解壓代碼:
public String unzip() {
String result;
try {
FileInputStream fin = new FileInputStream(this.filePath);
ZipInputStream zin = new ZipInputStream(fin);
ZipEntry ze = null;
while ((ze = zin.getNextEntry()) != null) {
Log.v("Unzip", "Unzipping " + ze.getName());
if (ze.isDirectory()) {
_dirChecker(ze.getName());
} else {
// Read 16 k at a time
byte[] buffer = new byte[16*1024];
int read;
FileOutputStream fout = new FileOutputStream(this.location+ "/" + ze.getName());
while ((read = zin.read(buffer)) != -1)
{
fout.write(buffer, 0, read);
}
zin.closeEntry();
fout.close();
}
}
zin.close();
result = "success";
} catch (Exception e) {
Log.e("unzip", "unzip", e);
result = "failure";
}
return result;
}
我懷疑它的SD卡部分。寫入SD卡可能非常慢,特別是在低端Android手機或便宜的SD卡上。解壓縮的時間也可能在低端Android手機上被懷疑,就像在舊iPhone手機上一樣,unziping將直接與處理器速度掛鉤。 –
要測試@RyanPoolos有關SD卡的建議,請嘗試將文件解壓縮至應用程序內部存儲器(http://developer.android.com/reference/android/content/Context.html#getFilesDir(\)返回的目錄),然後看看時間是否與iPhone更接近。 java zip包應該相當高效。 –
您也可以使用單獨的函數進行解壓縮和寫入,以查看哪個實際上在兩個平臺上花費時間。 –