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写操作,会出现错误。


原创粉丝点击