`
fengzhaoyang
  • 浏览: 34713 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ZipFile(如何实现对文件和目录的压缩,解压缩?

    博客分类:
  • Java
阅读更多

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class ZipFile {
	public static void main(String[] args) {

	}

	/**
	 * 文件压缩
	 * files:要压缩的文件
	 * destZip:压缩之后的zip文件所放的目录,需要"D:\\"或"D:\\test\"格式
	 * */

	public static void zip(String[] files, String destZip) throws IOException {
		FileOutputStream fos = new FileOutputStream(destZip);
		BufferedOutputStream bos = new BufferedOutputStream(fos);
		ZipOutputStream zos = new ZipOutputStream(bos);

		//循环读文件,压缩到zip中
		for (int i = 0; i < files.length; i++) {
			String file = files[i];
			FileInputStream fis = new FileInputStream(file);
			BufferedInputStream bis = new BufferedInputStream(fis);
			//获取文件名,创建条目并添加到zip中
			File f = new File(file);
			ZipEntry zl = new ZipEntry(f.getName());
			zos.putNextEntry(zl);
			//读取文件中的字节信息,压入条目
			int tmp = -1;
			while ((tmp = bis.read()) != -1) {
				zos.write(tmp);
			}
			zos.closeEntry();
			bis.close();
			fis.close();
		}
		zos.close();
		bos.close();
		fos.close();
	}

	/**
	 * 文件解压缩
	 * zipfile:要解压缩的zip文件
	 * destpah:解压后文件所放的目录,需要"D:\\"或"D:\\test\"格式
	 * */
	public static void unzip(String zipfile, String destpath) throws IOException {
		FileInputStream fis = new FileInputStream("C:\\a.zip");
		ZipInputStream zis = new ZipInputStream(fis);
		ZipEntry zl = null;
		while ((zl = zis.getNextEntry()) != null) {
			if (zl.isDirectory()) {
				File f = new File("C:\\" + zl.getName());
				f.mkdirs();
			} else {
				String file = zl.getName();
				FileOutputStream fos = new FileOutputStream(destpath + file);
				int tmp = -1;
				while ((tmp = zis.read()) != -1) {
					fos.write(tmp);
				}
				zis.closeEntry();
				fos.close();
			}
		}
		zis.close();
	}
	
	/**
	 * 压缩目录
	 * zipFileName:压缩后zip文件的路径
	 * inputFile:需要压缩的源目录
	 * */
	public void zip(String zipFileName,String inputFile)throws Exception{
		File file =new File(inputFile);
		ZipOutputStream out =new ZipOutputStream(new FileOutputStream(zipFileName));
		zip(out,file,"");
		System.out.println("zip done");
		out.close();
		
	}
	//递归遍历子目录和文件,进行压缩
	private void zip(ZipOutputStream out, File f, String base) throws Exception{
		System.out.println("Zipping"+f.getName());
		if(f.isDirectory()){
			File[] fl=f.listFiles();
			out.putNextEntry(new ZipEntry(base+"/"));
			base = base.length()==0?"":base+"/";
			for(int i=0;i<fl.length;i++){
				zip(out,fl[i],base+fl[i].getName());
			}
		}else{
			out.putNextEntry(new ZipEntry(base));
			FileInputStream in =new FileInputStream(f);
			int b;
			while((b=in.read())!=-1){
				out.write(b);
				in.close();
			}
		}
	}
	
	/**
	 * 解压缩目录
	 * zipFileName:需要解压缩的zip文件
	 * outputDirectory:解压缩后文件所放路径
	 * */
	public void unzip2(String zipFileName,String outputDirectory) throws Exception{
		ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
		ZipEntry z;
		while((z=in.getNextEntry())!=null){
			System.out.println("unziping:"+z.getName());
			if(z.isDirectory()){
				String name=z.getName();
				name=name.substring(0,name.length()-1);
				File f=new File(outputDirectory+File.separator+name);
				f.mkdirs();
				System.out.println("mkdirs:"+outputDirectory+File.separator+name);
			}else{
				File f=new File(outputDirectory+File.separator+z.getName());
				f.createNewFile();
				FileOutputStream out=new FileOutputStream(f);
				int b;
				while((b=in.read())!=-1){
					out.write(b);
				}
				out.close();
			}
		}
		in.close();
	}
}
分享到:
评论

相关推荐

    zipfile.dll或者myzip.dll的下载解压缩dll

    功能 : 将目录SrcPath里的所有文件(子目录)添加到压缩文档ZipFile 参数 : SrcPath 待压缩目录(全路径) Zipfile 目标文件(全路径) 返回 : 失败 &gt;0 成功 说明 : 同名文件将自动被替换(overwrite) 解压文件...

    Python 实现的解压缩工具-zipfile.exe

    一款实用 python 的 zipfile 库写的加压缩软件,可以对文件,文件夹进行解压压缩 注意:本软件不支持中文为路径名的解压缩,所以建议使用英文命名的目录和文件

    python代码实现pj zip解压缩文件

    python代码实现pj zip解压缩文件 zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的 zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝...

    Python解压缩zip文件原理与实践笔记.md

    本文通俗易懂地介绍了Python中的ZIP解压缩操作,涵盖了解压缩的必要性、基本思路以及利用zipfile模块的具体代码实现,既解析了概念,也配合示例讲解了实践操作,全面而细致地讲解了ZIP解压缩的相关知识。 适合人群: ...

    Java压缩/解压缩zip

    使用Java核心API实现单文件/多文件/整个目录的压缩/解压缩功能,由于自带API(1.6)不支持指定编码方式,因此中文会出现乱码(1.7貌似已经支持指定编码方式),所以还写了一个基于ant包的压缩/解压缩代码。

    java算法,实现压缩及解压缩

    Java实现压缩与解压缩ZIP  import java.io.BufferedInputStream;  import java.io.BufferedOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;...

    Oracle P/L SQL实现文件压缩、解压功能

    Oracle P/L SQL实现文件压缩、解压功能,以下是此过程包的头部,包体经常打包处理plb,感兴趣用户可以下载下来。 Create or Replace Package UTL_ZIP AUTHID CURRENT_USER as Type File_List is Table of Clob; -...

    axml.zip apk压缩文件解压缩乱码问题

    在Java中通过ZipFile解析Android apk 压缩文件,获取版本号等信息,获取的manifest文件格式无法识别为xml,导致无法解析,该jar文件用来处理乱码文件,apk压缩文件解压缩乱码问题

    JAVA文件压缩与解压缩的设计与实现(源代码+论文)

    一、文件压缩,是很有必要的,我们在进行文件,传输过程中,很多时候都是,都是单个文件单个文件发送接收,但是当数据量特别大,或者文件数量比较多的时候,这个时候就可以考虑文件压缩。 二、优势:文件压缩过后,...

    net.lingala.zip4j.core.ZipFile_1.3.2.jar 解压缩zip,带解压进度

    zip4j默认采用UTF-8编码,所以它支持中文,同时也支持密码,而且支持多种压缩算法,可以说功能强大,但使用起来却非常简单,当然,如果需求比较...如果你仅仅是简单地解压一个zip压缩文件,那么只需要简单地几步即可。

    MyZip.dll 压缩 解压缩

    *** 解压缩文件 *** *** *** ************************************************** 1. Function MyZip_ExtractFileAll(ZipFile,PathName:pchar):integer;stdcall; 功能 : 将ZipFile中包含的所有文件解包...

    c# 解压缩文件或文件夹代码 可设置压缩密码

    c# 解压缩文件或文件夹代码 c# 解压缩文件或文件夹代码 可设置压缩密码

    java压缩文件生成带密码的zip包,解压带密码的zip包的工具类

    单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"". * 如果传null或者""则将压缩文件存放在当前...

    SharpCompress 解压缩zip,rar文件,解决中文乱码

    应用SharpCompress0.22开源包进行文件的解压缩(zip,rar文件),已处理中文乱码问题,例子很基础.源码环境 VS2017 15.3 .

    Python实现压缩文件夹与解压缩zip文件的方法

    本文实例讲述了Python实现压缩文件夹与解压缩zip文件的方法。分享给大家供大家参考,具体如下: 直接上代码 #coding=utf-8 #甄码农python代码 #使用zipfile做目录压缩,解压缩功能 import os,os.path import ...

    Android实现zip文件压缩及解压缩的方法

    本文实例讲述了Android实现zip文件压缩及解压缩的方法。分享给大家供大家参考。具体如下: DirTraversal.java如下: package com.once; import java.io.File; import java.util.ArrayList; import java.util....

    C#压缩/解压ZIP文件带密码功能

    从别的地方转载的,挺不错的!

    批量解压并对文件重命名 C#

    用C#实现的文件 批量解压并对文件重命名 一个压缩文件中只有一个文件 并把文件名替换为压缩包得名字。 大家可以在此基础上进行更改。有问题 请联系 whutstone@126.com

    压缩解压缩word转html

    好久以前的了,可能有点乱,见谅哈,压缩解压缩zip大概是Test9和ZipFile这两个类,然后Test9里也可以 解压rar,但是压缩文件为rar只能调用系统命令咯 另OfficeToHtml是实现word,ppt,excel转html的功能,是用jacob...

    ZIP 压缩 解压缩 源码

    使用ZLIB库 包装的压缩解压缩文件的源码 VS2005 工程创建 /* */ class ZIPWRAP_EXP CZipper { public: CZipper(); virtual ~CZipper(); // simple interface static bool ZipFile&#40;const char* szFilePath...

Global site tag (gtag.js) - Google Analytics