`
fengzhaoyang
  • 浏览: 35331 次
  • 性别: 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压缩解压类库 ASP.NET 压缩解压实现

    通过以上代码,我们可以实现对目录的压缩和解压缩,以及对嵌套ZIP文件的二级解压。`ZipFile`类库提供了一种高效且易于使用的API,帮助开发者在ASP.NET应用中处理ZIP文件,大大简化了相关任务的实现。在实际项目中,...

    Delphi实现Zip压缩/解压缩

    例如,DLL中的接口和实现可能如下所示: ```delphi // XE4 DLL Interface type IZipService = interface(IInterface) ['{B8269D5F-1F33-4A9F-975F-A288C5581373}'] procedure CompressFile(const Source, Dest: ...

    文件解压缩实现

    总结起来,文件解压缩实现涉及对zip文件格式的理解、使用Java的`java.util.zip`包以及正确处理文件流。通过`MyZip.java`这个文件,我们可以学习到如何在Java中进行文件的压缩和解压缩操作,这对于处理大量数据的项目...

    Python实现多级目录压缩与解压文件的方法

    在Python编程中,处理文件和目录的压缩与解压缩任务是一项常见的需求。本文将详细介绍如何使用Python实现对多级目录的压缩与解压。主要涉及的库是`zipfile`和`os`,这两个库提供了文件操作和文件系统路径处理的基本...

    ASP.NET利用RAR实现文件压缩解压缩

    ASP.NET 是一种基于 .NET Framework 的 Web 应用开发平台...总之,在ASP.NET中利用WinRAR进行文件压缩解压缩是一种可行的方法,但可能涉及到安全性和性能的问题。开发时应权衡这些因素,选择最适合项目需求的实现方式。

    JAVA文件压缩与解压缩实践(源代码+论文)

    本资源"JAVA文件压缩与解压缩实践(源代码+论文)"提供了一个完整的实践教程,包括源代码和相关论文,帮助开发者深入理解这一主题。 一、压缩算法简介 文件压缩主要通过特定的算法减少文件大小,常见的压缩算法有ZIP...

    DotNet 实现Zip 解压缩文件(可压缩文件或文件夹)

    在.NET框架中,可以使用System.IO.Compression命名空间下的ZipArchive类来实现Zip文件的压缩与解压缩操作。本文将详细讲解如何通过C#代码实现这个功能,适用于Visual Studio 2005及以上版本。 首先,我们需要引入...

    文件解压缩,压缩源码c#,net4.0

    在IT行业中,文件压缩和解压缩是常见的操作,特别是在数据传输、存储优化和软件分发等领域。本资源是一个基于C#编程语言实现的压缩和解压缩的源码库,适用于.NET 4.0框架,提供了对多种压缩格式的支持,如ZIP和RAR。...

    C#实现winform压缩解压文件夹

    解压缩ZIP文件,我们可以使用ZipFile.ExtractToDirectory方法,将整个ZIP文件内容解压到目标目录。以下是解压缩的代码示例: ```csharp using System.IO; using System.IO.Compression; public void ...

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

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

    java压缩文件解压缩和文件的压缩

    在Java编程语言中,处理...通过以上这些知识点,你可以构建一个强大的Java工具类,实现ZIP和RAR文件的压缩与解压缩,包括处理加密的ZIP文件。这个工具类可以是项目中一个可靠的助手,提高代码的可重用性和可维护性。

    python压缩文件与解压缩文件

    解压缩ZIP文件则相对简单,可以使用`ZipFile`对象的`extractall()`方法,将整个ZIP文件解压到指定目录: ```python import zipfile with zipfile.ZipFile('example.zip', 'r') as zipf: zipf.extractall('...

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

    - `ZipFile.ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName)`: 这个方法可以将ZIP文件解压缩到指定的目录。 - `ZipFile.OpenRead(string archiveFileName)`: 用于打开ZIP文件...

    C#实现文件的压缩与解压缩代码

    在C#编程环境中,文件的...开发者可以根据具体需求选择合适的方法,结合文件流操作,实现高效且灵活的文件压缩解决方案。在实际项目中,确保正确处理异常,以及考虑性能和内存使用情况,都是编写高质量代码的关键因素。

    VC++ MFC 如何用 CZip CUnzip类压缩解压缩文件

    在VC++ MFC环境下,开发过程中我们可能会遇到需要对文件进行压缩或解压缩的需求。CZip和CUnzip是两个非常实用的类,它们分别用于文件的压缩和解压缩操作,是ZLib库的一个MFC封装,使得在MFC项目中使用起来更加方便。...

    java android zip解压缩(解决压缩中文乱码问题)

    然而,当压缩文件包含中文字符时,解压缩过程中可能会遇到乱码问题。这是因为编码格式不匹配或者处理方式不当导致的。本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 ...

    文件解压缩

    文件解压缩 文件解压缩是指将压缩后的文件恢复到原始状态的过程。通过 Java 代码使用文件的压缩和解压缩,超级使用,推荐。下面是关于文件解压缩的知识点: 压缩文件操作工具类 压缩文件操作工具类(CompressUtil...

    C#实现文件的压缩和解压缩

    通过以上内容,我们了解了如何在C#中利用SharpZipLib库来实现BZIP2和GZIP的文件压缩与解压缩。在实际开发中,根据性能和压缩率的需求,可以选择适合的压缩算法。同时,确保正确处理异常和错误,以确保文件操作的可靠...

    C#压缩解压缩类库项目SharpZip.zip

    通过这个项目,你可以深入理解如何在C#中利用这个库进行文件和目录的压缩解压缩,以及如何在自己的应用程序中集成这些功能。在实际项目中,确保正确处理异常、优化性能以及遵循最佳实践将有助于创建健壮和高效的压缩...

Global site tag (gtag.js) - Google Analytics