2013-10-14 57 views
3

我正在編寫一個需要提取7z存檔的Android應用程序。時間緊迫,我搜索了可用於我的項目的第三方庫或源代碼。Android上的p7zip - 在Android上提取7z存檔

起初,我從http://sourceforge.net/projects/p7zip/files/J7Zip/ 找到J7zip在修改了兩個示例類後,它在我的項目中工作,這很令人興奮!但問題是:1.提取大型檔案時會導致內存不足錯誤2.它僅支持使用Copy或LZMA編解碼器的檔案。我很傷心...

然後,我在StackOverflow中找到這個:「J7zip on Android - Extracting From an Archive and Listing Contents」。我的要求與這個問題非常相似。正如它提到的andro7z,它包含來自以下的C/C++代碼:http://sourceforge.net/projects/p7zip/files/p7zip/;我相信這對我來說是一個很好的解決方案。

andro7z不包含「如何使用」文檔,我是新的JNI,我不知道如何修改andro7z以適應我的項目。那麼,任何人都已經實現了使用andro7z提取7z存檔?你可以與我分享演示代碼或步驟來實現嗎?謝謝!

+0

有人可以告訴我使用7z源代碼實現了提取7z壓縮文件的C++方法嗎? –

回答

2

我自己完成了這個項目,文件夾「jni/7z」和「src」下的類需要自己實現;如果需要支持加密存檔,則應該調用7z.dll中的方法或修改源文件代碼在C/CPP文件夾中,C/CPP是7z源代碼。

+0

很高興看到你已經管理它。你能否提供一些代碼和更多信息? –

+0

jni C++代碼:const char * args [5] = {「7za」,「x」,tarPath,extFile,0}; jint result = andro7za_main(ARGC,args); java調用代碼:public static native int extract(String targetPath,String extractFilePath); int result = extract(「 - o」+ targetPath,extractFilePath); –