您好,登錄后才能下訂單哦!
這篇文章主要講解了“Android怎么實現不解壓直接讀取zip包”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android怎么實現不解壓直接讀取zip包”吧!
文本:
zip包目錄結構:res/txt/data.json
文件sd卡路徑:android.os.Environment.getExternalStorageDirectory() + “/res.zip”
public static String readDataFile(String file) throws Exception { //截取路徑的文件名 res String fileName = file.substring(file.length() - 9, file.length() - 4); ZipFile zf = new ZipFile(file); InputStream in = new BufferedInputStream(new FileInputStream(file)); ZipInputStream zin = new ZipInputStream(in); ZipEntry ze; while ((ze = zin.getNextEntry()) != null) { if (ze.isDirectory()) { //Do nothing } else { if (ze.getName().equals(fileName + "/txt/data.json")) { BufferedReader br = new BufferedReader( new InputStreamReader(zf.getInputStream(ze))); String line; while ((line = br.readLine()) != null) { return line; } br.close(); } } } zin.closeEntry(); return ""; }
上面方法比較簡單沒什么好說的,大家理解就行,有點需要注意的就是在判斷是否是想要讀取的文件的時候,這里的路徑是以zip的壓縮目錄為根目錄做比較。也就是if (ze.getName().equals(fileName + "/txt/data.json")) 這句話中的fileName 當前值為res。最后返回讀取的內容String就完事了。
圖片和xml文件的讀取都差不多,下面直接貼出代碼了。
圖片:
zip包目錄結構:res/pic/haha.png
文件sd卡路徑:android.os.Environment.getExternalStorageDirectory() + “/res.zip”
public static Bitmap readGuidePic(String file, String ResId) throws Exception { String fileName = file.substring(file.length() - 9, file.length() - 4); ZipFile zf = new ZipFile(file); InputStream in = new BufferedInputStream(new FileInputStream(file)); ZipInputStream zin = new ZipInputStream(in); ZipEntry ze; while ((ze = zin.getNextEntry()) != null) { if (ze.isDirectory()) { //Do nothing } else { Log.i("tag", "file - " + ze.getName() + " : " + ze.getSize() + " bytes"); if (ze.getName().equals(fileName + "/pic/haha.png")) { InputStream is = zf.getInputStream(ze); Bitmap bitmap = BitmapFactory.decodeStream(is); return bitmap; } } } zin.closeEntry(); return null; }
xml文件:
zip包目錄結構:res/xml/app.xml
文件sd卡路徑:android.os.Environment.getExternalStorageDirectory() + “/res.zip”
public static InputStream readAppFile(String file) throws IOException { String fileName = file.substring(file.length() - 9, file.length() - 4); ZipFile zf = new ZipFile(file); InputStream in = new BufferedInputStream(new FileInputStream(file)); ZipInputStream zin = new ZipInputStream(in); ZipEntry ze; while ((ze = zin.getNextEntry()) != null) { if (ze.isDirectory()) { //Do nothing } else { if (ze.getName().equals(fileName + "/xml/app.xml")) { InputStream inputStream = zf.getInputStream(ze); return inputStream; } } } zin.closeEntry(); return null; }
感謝各位的閱讀,以上就是“Android怎么實現不解壓直接讀取zip包”的內容了,經過本文的學習后,相信大家對Android怎么實現不解壓直接讀取zip包這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。