java解压zip包
来源:互联网 发布:php基础书籍推荐 编辑:程序博客网 时间:2024/04/27 19:35
private void initCacheFile(){ ZipEntry entry = null; String strEntry = null; final int buffer=1024; int count=-1; InputStream is = null; BufferedInputStream bis; ZipInputStream zis; FileOutputStream fos=null; File entryFile=null; try {is = getAssets().open("httpCach_home.zip");BufferedOutputStream dest = null;bis = new BufferedInputStream(is);zis = new ZipInputStream(bis);byte data[] = new byte[1024];while((entry = zis.getNextEntry()) != null ){strEntry = entry.getName();if(entry.isDirectory()){ File zipFolder = new File(strEntry); if (!zipFolder.exists()) { zipFolder.mkdirs(); } }else{entryFile = new File(cache +"/"+ strEntry);if (!entryFile.exists()) {File parFile = entryFile.getParentFile();parFile.mkdirs();entryFile.createNewFile();}fos = new FileOutputStream(entryFile);dest = new BufferedOutputStream(fos, buffer);while ((count = zis.read(data, 0, buffer)) != -1) {dest.write(data, 0, count);}}}dest.flush();dest.close();fos.close();zis.close();bis.close();is.close();flag = false;} catch (IOException e){e.printStackTrace();} }这个和一般的文件读写差不多,唯一的区别是通ZipInputStream的getNextEntry获取包里面的每一个ZipEntry,然后就是往文件里面写数据,这里多了一个判断就是判断是文件还是目录,如果是目录话,用OutputStream写操作,会出现错误。