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

javazip打包和压缩

    博客分类:
  • java
 
阅读更多

使用java原始的zip压缩类打包和减压缩文件,缺点是如果文件夹或者文件名为中文会出现乱码

如果需要支持中文的,可以采用apache的org.apache.tools.zip.ZipOutputStream

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
 * 打包zip工具类,缺点是如果目录有中文乱码
 * @author 流浪鱼
 */
public class ZipUtil

{
	/**
	 * 文件压缩
	 * @param zipFileName
	 * @param inputFile
	 * @throws Exception
	 */
	public static void zip(String zipFileName, String inputFile) throws Exception {
		zip(zipFileName, new File(inputFile));
	}
	
	/**
	 * 压缩文件
	 * @param zipFileName  生成文件名
	 * @param inputFile  需要压缩文件流
	 * @throws Exception
	 */
	public static void zip(String zipFileName, File inputFile) throws Exception {
		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
				zipFileName));
		zip(out, inputFile, "");
		out.close();
	}
	/**
	 * 解压zip文件
	 * @param zipFileName
	 * @param outputDirectory 解压到的文件夹
	 * @throws Exception
	 */
	public static void unzip(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.mkdir();
				System.out.println("mkdir " + 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();

	}
	/**
	 * 文件压缩
	 * @param out  zip输出流
	 * @param f 需要压缩的文件,可以为文件夹也可以为文件
	 * @param base
	 * @throws Exception
	 */
	public static void zip(ZipOutputStream out, File f, String base) throws Exception {
		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();
		}
	}
	
	public static void main(String[] args) {
		String sourceDir = "E:/fmpptest";
		String targetDir="e:/";
		File f =new File(sourceDir);
		String zipName = targetDir+"测试.zip"; 
		try {
			zip(zipName,f);
                        unzip(zipName,"c:/test");
                } catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
}
分享到:
评论

相关推荐

    java压缩文件,zip打包

    应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包

    java Zip打包完整例子

    Java中的Zip打包主要涉及到对文件或文件夹进行压缩处理,这是一种常见的数据存储和传输方式。在Java中,我们可以使用内置的`java.util.zip`包来实现这个功能。下面将详细介绍如何使用Java进行Zip打包,以及涉及到的...

    java打包压缩ZIP

    一、Java打包压缩ZIP Java中的`java.util.zip`包提供了对ZIP文件的支持。主要涉及到的类有`ZipOutputStream`和`ZipEntry`。`ZipOutputStream`是用于创建ZIP文件的输出流,而`ZipEntry`则代表ZIP文件中的一个条目...

    JAVA ZIP压缩打包下载

    标题“JAVA ZIP压缩打包下载”指的是使用Java编程语言来实现ZIP文件的压缩和打包功能。在Java中,我们可以使用java.util.zip包中的ZipOutputStream类来完成这个任务。这个过程涉及读取文件,创建ZIP输出流,并将文件...

    java zip 压缩 解压缩 附带ant.jar

    首先,让我们来看一下`JavaZip.java`这个文件。它很可能包含了一个示例程序,演示了如何使用Java API来压缩和解压缩文件。在Java中,我们通常使用`ZipOutputStream`来创建ZIP文件,`ZipInputStream`来读取和解压缩...

    Java调用Zip类批量压缩多个文件.rar

    Java调用Zip类批量压缩多个文件,此前有一个是压缩单个文件,也可参考,相关代码中可找到此源码。  public class ZipDemo extends JFrame{  JFileChooser fileChooser; //文件选择器  JList fileList; //待...

    java zip文件压缩与解压缩

    Java中的zip文件压缩和解压缩是程序开发中常见的任务,特别是在处理大量数据或者打包资源文件时。Apache Commons Compress库是Java中一个强大的工具,它提供了对多种压缩格式的支持,包括zip,而且能够处理中文...

    javazip压缩类

    JavaZip压缩类是Java编程语言中用于处理ZIP文件格式的核心工具,主要集中在java.util.zip包中。这个包提供了多种类和接口,使得开发者能够轻松地对数据进行压缩和解压缩,尤其是在开发需要处理大量数据的应用时,如...

    java Zip压缩解压

    在这个场景中,可能是在测试Zip压缩和解压的代码时,用到了JUnit进行断言和异常检查,确保代码的正确性。 总结来说,"java Zip压缩解压"涉及了Java标准库中的`java.util.zip`包,用于创建和读取ZIP文件;Apache Ant...

    java 操作Zip文件(压缩、解压、加密).zip

    - **压缩任务**:Ant中的`zip`任务可以用于创建Zip文件,你可以指定要打包的文件和目录,甚至可以设置压缩级别。 - **解压缩任务**:使用`unzip`任务可以解压缩Zip文件到指定的目标目录。 - **Ant脚本**:Ant通过...

    java打包zip(超级简单)

    因项目需求,需要在线生成world文档,并且需要批量生成world,那么就可以用zip打包所有world进行下载,这里提供的是一个简单的demo,如需了解在线生成文件,并打包到zip,可以问我

    java zip加密压缩

    8. **解压缩和解密**:解压ZIP文件时,需要使用相同的AES密钥解密提取出的字节数组,然后将其保存为CSV文件。这个过程需要逆序执行加密步骤,即先使用`Cipher`的`init`方法设置解密模式,再调用`doFinal`解密。 9. ...

    Java zip 压缩/解压源码

    在Java编程语言中,`zip`格式是一种常用的文件压缩方式,用于将多个文件打包成一个单一的可压缩文件。这个`Java zip 压缩/解压源码`的资源提供了一个简洁易用的API,使得开发者能够方便地对文件进行压缩和解压缩操作...

    java打包目录文件为ZIP

    ### Java 打包目录文件为 ZIP 的实现方法 在 Java 中,经常需要处理文件压缩与解压的操作。本文将详细介绍如何使用 Java 实现目录文件的 ZIP 压缩功能,并提供一个具体的示例代码。 #### 核心概念 1. **Java Zip ...

    javaZIP压缩源代码

    javaZIP压缩源代码,可以很方便的进行打包.源码含有详细的注释.

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    `FileUtils.java`类是这个功能的具体实现,它封装了上述的压缩和解压过程,使开发者能够轻松地在代码中调用这些功能。理解并掌握这些知识,对于进行Java相关的文件操作和数据打包工作至关重要。

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

    压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者""....

    java 中 zip压缩文件解压工具类

    总的来说,Java的`java.util.zip`包为处理压缩文件提供了强大的支持,包括ZIP和JAR格式。通过创建如`CompressFileUtils`这样的工具类,我们可以方便地实现文件的解压缩操作,这对于处理资源文件、打包应用或在网络上...

    java实现压缩和压缩zip格式文件的功能

    ZIP是一种广泛使用的文件归档格式,它能将多个文件或目录打包成一个单一的ZIP文件,方便存储和传输。在Java中,我们可以使用`ZipOutputStream`和`ZipInputStream`来分别处理压缩和解压缩的过程。 **压缩ZIP文件** ...

    java将文件打包成ZIP压缩文件和解压缩zip文件

    在Java编程中,打包文件为ZIP压缩文件以及解压缩ZIP文件是常见的操作,尤其是在处理大量数据传输或存储时。下面我们将详细探讨这个话题。 首先,Java标准库提供了`java.util.zip`包,它包含了用于处理ZIP文件的类,...

Global site tag (gtag.js) - Google Analytics