Android编程-zip压缩与解压缩

本文介绍了一种使用Java实现ZIP文件压缩和解压缩的方法。通过具体的代码示例展示了如何将一个文件压缩成ZIP格式,并如何从ZIP文件中解压缩出原始文件。此方法适用于需要进行文件打包或解包的应用场景。

代码如下:

zip压缩:

 

//压缩文件并存放到指定目录
    private void zipFile(String fileFrom, String fileTo) {
    	
    	try {
            FileInputStream in = new FileInputStream(fileFrom);
            FileOutputStream out = new FileOutputStream(fileTo);
            ZipOutputStream zipOut = new ZipOutputStream(out);
            ZipEntry entry = new ZipEntry(fileFrom);
            zipOut.putNextEntry(entry);
            int nNumber;
            byte[] buffer = new byte[512];
            while ((nNumber = in.read(buffer)) != -1){
                zipOut.write(buffer, 0, nNumber);
                countBuffer++;
            }
            zipOut.close();

            out.close();
            in.close();
            handlerCopy.sendEmptyMessage(2);
        } catch (IOException e) {
        	handlerCopy.sendEmptyMessage(3);
            System.out.println(e);
        }
    }

 

zip解压缩:

private static void Unzip(String zipFile, String targetDir) {
    	int BUFFER = 4096; //这里缓冲区我们使用4KB,
    	String strEntry; //保存每个zip的条目名称
    	try {
    		BufferedOutputStream dest = null; //缓冲输出流
    	    FileInputStream fis = new FileInputStream(zipFile);
    	    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
    	    ZipEntry entry; //每个zip条目的实例
    	    while ((entry = zis.getNextEntry()) != null) {
    	    	try {
    	    		int count;
    	    		byte data[] = new byte[BUFFER];
    	    		strEntry = entry.getName();
    	    		File entryFile = new File(targetDir + strEntry);
    	    		File entryDir = new File(entryFile.getParent());
    	    		if (!entryDir.exists()) {
    	    			entryDir.mkdirs();
    	    		}
    	    		FileOutputStream 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();
    	    	} catch (Exception ex) {
    	    		ex.printStackTrace();
    	    	}
    	    }
    	    zis.close();
    	} catch (Exception cwj) {
    		cwj.printStackTrace();
    	}
	}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值