`
CoderDream
  • 浏览: 471936 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java API 压缩与解压缩之一

阅读更多

首先我们实现最简单的解压缩zip文件,该zip文件中不包含文件夹,也不含中文名。

/**
 * <pre>
 * 参考:
 * 	http://www.ibm.com/developerworks/cn/java/l-compress/index.html
 * </pre>
 */
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class UnZip {
	/** 定义一个2K的缓冲区 */
	static final int BUFFER = 2048;

	public static void main(String[] args) {
		String fileName = "c:/testlog.zip";
		// String unZipDir = "c:/abcd/abcd/abcd/abcd/abcd/";
		String unZipDir = "c:/1/2/";
		unZip(fileName, unZipDir);
		// System.out.println(makeDir(unZipDir));
	}

	/**
	 * @param fileName
	 *            String 待解压缩的文件名
	 * @param unZipDir
	 *            String 存放解压缩后生成的文件的文件夹
	 */
	public static void unZip(String fileName, String unZipDir) {
		try {

			// 先判断目标文件夹是否存在,如果不存在则新建,如果父目录不存在也新建
			File f = new File(unZipDir);
			if (!f.exists()) {
				f.mkdirs();
			}

			BufferedOutputStream dest = null;

			// 将用文件输入流读入ZIP文件
			FileInputStream fis = new FileInputStream(fileName);
			// 类ZipInputStream读取ZIP文件
			ZipInputStream zis = new ZipInputStream(
					new BufferedInputStream(fis));
			ZipEntry entry;
			String newFileName = "";
			// ZIP输入流打开后,你可以使用getNextEntry方法来读取ZIP文件中的条目数,
			// 该方法返回一个ZipEntry对象。如果到达文件的尾部,getNextEntry返回null
			while ((entry = zis.getNextEntry()) != null) {
				System.out.println("Extracting: " + entry);
				int count;
				byte data[] = new byte[BUFFER];
				// write the files to the disk
				newFileName = unZipDir + "/" + entry.getName();
				System.out.println("newFileName: " + newFileName);
				FileOutputStream fos = new FileOutputStream(newFileName);
				dest = new BufferedOutputStream(fos, BUFFER);
				while ((count = zis.read(data, 0, BUFFER)) != -1) {
					dest.write(data, 0, count);
				}
				dest.flush();
				dest.close();
			}
			zis.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static boolean makeDir(String unZipDir) {
		boolean b = false;
		try {
			File f = new File(unZipDir);
			if (!f.exists()) {
				b = f.mkdirs();
			}
		} catch (Exception e) {
			e.printStackTrace();
			return b;
		}
		return b;
	}
}
 

 

分享到:
评论

相关推荐

    JAVA文件压缩与解压缩实践的实现.rar

    Java文件压缩与解压缩是指将一个或多个文件或文件夹打包成一个压缩文件,或者将压缩文件解压缩成原始文件的过程。 常见的压缩格式包括ZIP、GZIP、TAR等,Java提供了相应的API来实现对这些格式的操作。 功能特点: ...

    使用Java API进行tar.gz文件及文件夹压缩解压缩.docx

    3.tar.gz或.tgz通常是指将文件打包到一个tar文件中,并将它使用Gzip进行压缩。 一、将两个文件打包到tar.gz 下面的这个例子是将2个文件打包为tar.gz压缩文件。下文代码中的流操作使用了try-with- resources语法,...

    Java压缩/解压缩zip

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

    图形数据库Neo4j之Java API使用示例

    需要使用 java API 编写查询接口,参考网上的示例自己写了一个接口类: Neo4jUtil.java。目前只完成了查询方法。创建、删除及修改方法未实现。请自行参考代码来实现。 使用方法: 在 eclipse 中导入解压缩的工程...

    java解压缩文件支持中文

    java解压缩文件支持中文,经过测试,可执行,项目中正在应用

    JAVA API官方源码

    Java api 源代码就在jdk目录下src压缩包,解压缩就看到了。1.8.0版本,还要必须不少于50字。。。。。。。。。。。。。。。。。。。。

    java8 api文档(英文版)

    java1.8的API英文版的文档,chm格式文件,下载后解压缩可直接打开使用

    Java API 中文版

    JAVA API,中文版,解压缩后点击index.html即可打开查看。

    quickunzip:用Java编写的快速并行解压缩

    每个线程使用一个ZipFile实例跨多个线程解压缩一个zipfile。 ( ZipFile对象具有同步方法,因此每个线程需要一个实例来进行并行解压缩。) QuickUnzip可能是使用标准Java ZipFile API可以编写的最快的解压缩程序-...

    通过java api实现解压缩zip示例

    主要介绍了通过java api实现解压缩zip示例,需要的朋友可以参考下

    ZIP格式压缩/解压系统设计(JAVA)

    因此,在这种情况下,程序设计人员首先考虑的减少软件系统运行过程中需要传输的数据量,如果有些数据必须要传输,则软件工程师通常将这些数据在发送端进行压缩,而在数据接收端将数据解压缩,从而主动减少应用系统...

    java下的rar、zip等压缩、解缩工具

    java本身自带有zip格式的压缩解压api,但是对于含有中文的压缩文件无能为力,好在还有apache的ant可以解决zip文件的中文乱码问题。mucommander是一个可以支持zip、gzip、rar、tar、iso等格式的全能工具,这个包是...

    Java EE API

    Java EE(J2EE) API的离线版。方便大家离线使用。压缩包,英文版。解压缩之后index.html为索引页。

    SuperDotNetAPI:API方式直接调用C#的DLL,支持多音字转拼音、Gzip解压缩、公式计算(VBA、C++、VB、Delphi甚至java都可以)

    2、64位下的GZIP解压缩; 3、数学公式计算; 4、离线中文OCR识别(见excelhome)。 为了解决这几个个长期困扰我的问题,以及未来经常会遇到的其它问题(例如AES加解密、验证码图片处理、文本编解码、大数的数学运算...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    geometry-api-java:用于Java的Esri Geometry API使开发人员可以编写自定义应用程序以分析空间数据。 此API用于HadoopEsri GIS工具和其他第三方数据处理解决方案

    WKT和Shape)导入来创建简单几何的API方法用于空间运算的API方法:并集,差,相交,裁剪,剪切和缓冲用于拓扑关系测试的API方法:等于,内部,包含,交叉和接触指示构建源代码: 下载并解压缩.zip文件,或克隆存储库...

    java开源包11

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包9

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

Global site tag (gtag.js) - Google Analytics