java解压zip包

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值