`

java实现文件及目录压缩

    博客分类:
  • Java
阅读更多
package org.alfresco.repo.bom.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;




/**
 * Compressor Util
 * @author HJ
 *
 */
public class CompressorUtil {
	
	private static final String source = "F:/test"; // wait compressor source path 
	private static final String zipSource = "F:/chiang.zip"; // after compressor zip file path
	private static long startTime;// compressor start system time
	private static long endTime;// compressor end system time
	
	public void compressor() throws Exception{
		startTime = System.currentTimeMillis();//record start compressor system time , 
		boolean flag = false;// flag :true->compressor success
		String baseDir = "";//defalut relative Dir , "" is gen Dir
		
		File s = new File(source);
		File zs = new File(zipSource);//create zip file
		if (zs.exists()) {// if this dir exists this zip file 
			zs.delete(); // delete this zip file ,
		}
		ZipOutputStream zos = null;
		try {
			zos = new ZipOutputStream(new FileOutputStream(zs));
			zos.setEncoding("GBK"); // solve Chinese garbled
			startCompressor(baseDir, zos, s);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if (zos!=null)
				zos.close();
			endTime = System.currentTimeMillis();
			System.out.println("compressor success,use time:"+(endTime-startTime)+"ms");
		}
	}
	
	public void startCompressor(String baseDir,ZipOutputStream zos,File source) throws Exception{
		if (source.isFile()) {// is file
			toCompressedFile(baseDir, zos, source);
		}
		if (source.isDirectory()) { //is dir
			File[] sources = source.listFiles(); // get dir all files ( file or dir)
			for(File f:sources){
				if (f.isFile()) {// is file
					toCompressedFile(baseDir, zos, f);
				}
				if (f.isDirectory()) {//is dir
					// if is dir , update baseDir value .
					String newBaseDir = baseDir + f.getName() + "/";
					createCompressedDir(baseDir, zos, f);//create dir and entry
					startCompressor(newBaseDir, zos, f); //  Re
				}
			}
		}
	}
	/**
	 * add entry to zip file by stream way 
	 * @param baseDir
	 * @param zos
	 * @param f
	 * @throws Exception
	 */
	public void toCompressedFile(String baseDir,ZipOutputStream zos,File f) throws Exception{
		InputStream input = null;
		ZipEntry z = new ZipEntry(baseDir+f.getName());
		try {
			zos.putNextEntry(z); // add entry to zip file
			input = new FileInputStream(f); 
			int data = 0;
			while ((data=input.read())!=-1) {
				zos.write(data);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(input!=null)
				input.close();
			zos.closeEntry();
		}
	}
	
	/**
	 * create compressed file dir and ZipEntry
	 * @param baseDir 
	 * @param zos    zip file's ZipOutputStream
	 * @param f		
	 */
	public void createCompressedDir(String baseDir,ZipOutputStream zos,File f){
		ZipEntry z = new ZipEntry(baseDir+f.getName()+"/");
		try {
			zos.putNextEntry(z);
			zos.closeEntry();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	//test main method
	public static void main(String[] args) throws Exception{
		CompressorUtil cu = new CompressorUtil();
		cu.compressor();
	}
}

 

分享到:
评论

相关推荐

    java实现视频压缩

    在"java实现视频压缩"这个项目中,可能会包含以下步骤: 1. **读取视频文件**:使用Java的FileInputStream或相关的多媒体库,读取原始视频文件的数据。 2. **解析视频流**:利用JMF或Xuggler,解析视频流中的每一...

    java实现多个文件压缩

    java实现多个文件压缩

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

    4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流,写入数据到压缩流,以及从压缩流中读取和写入文件等步骤。 5. **文件操作**:在...

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

    本文将详细讲解如何使用Java实现将多目录多层级的文件打成ZIP包,以及如何解压这些ZIP包。我们将主要关注`FileUtils.java`这个类,以及依赖的`commons-compress-1.1.jar`库。 `commons-compress-1.1.jar`是Apache ...

    java实现多个文件压缩成rar压缩包

    ### Java 实现多个文件压缩成 RAR 压缩包 #### 背景与目的 在日常工作中,经常会遇到需要将多个文件压缩为一个压缩包的情况,以便于存储、传输或备份。Java 作为一种广泛使用的编程语言,在处理文件操作方面提供了...

    java实现对文件或文件夹的压缩和解压缩

    在标题中提到的"java实现对文件或文件夹的压缩和解压缩",我们可以使用这个库来实现。具体来说,我们可以创建一个`ZipUtil`类,里面包含压缩和解压缩的静态方法。 首先,为了压缩文件或文件夹,我们需要使用`org....

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

    ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。

    java文件分割压缩

    6. **类的设计**:`Work5`, `Work5_new`, `OneTest`, `JieMu`等可能是实现文件分割和压缩功能的具体类。它们可能包含了主函数、方法以及一些辅助类来完成文件处理任务。 7. **测试**:`OneTest`类很可能包含了单元...

    JAVA实现的文件压缩

    以下是对"JAVA实现的文件压缩"这一主题的详细讲解。 1. **Java SWING简介** Java SWING是Java Foundation Classes (JFC)的一部分,提供了一组丰富的图形用户界面(GUI)组件,用于创建桌面应用。它基于Java AWT...

    Java实现批量下载并压缩文件.pptx.pptx

    5. **代码实现**:使用Java实现上述功能,首先需要导入必要的库,如`minio-java`(MinIO的Java SDK)和可能的HTTP客户端库。以下是一般步骤: - 配置MinIO客户端,连接到服务器。 - 获取目标文件列表。 - 创建`...

    java多文件压缩成zip文件并实现下载

    在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...

    (JAVA)利用Java实现zip压缩.解压缩.rar_decompress rar java_zip 压缩

    在Java编程语言中,我们...总的来说,Java中的ZIP压缩和解压缩功能强大且易于使用,是开发人员处理文件压缩需求的首选工具。通过熟练掌握`java.util.zip`包,你可以轻松地在Java应用程序中实现文件的压缩和解压缩功能。

    java实现对图片的压缩上传

    该工具类可以实现以下几个功能 1、得到有效文件的长度(即大小),以字节表示 getFileSize(String filePath),需要传入文件路径 2、可以上传图片与非图片文件。有二个重构方法 一、无限制文件大小上传upLoad(String...

    Spring Boot中使用Java实现文件批量下载与压缩功能

    ### Spring Boot中使用Java实现文件批量下载与压缩功能 #### 一、背景介绍 在Web应用开发中,经常需要提供给用户批量下载的功能,尤其是在文件管理或者文档分享等场景下。传统的做法是一次只下载一个文件,这不仅...

    Java把文件压缩成zip

    本文主要介绍如何使用Java实现文件的ZIP压缩功能,并提供了完整的代码示例。通过学习本文,你可以掌握以下几个知识点: 1. 使用`java.util.zip`包中的类进行文件压缩。 2. 如何创建ZIP输出流并写入文件数据。 3. ...

    JAVA实现目录及文件的zip压缩和解压

    在Java中,我们可以使用java.util.zip包中的ZipOutputStream和ZipInputStream类来实现文件的压缩和解压缩。 ### ZIP文件压缩 1. **创建ZipOutputStream对象**:这是压缩的核心,它继承自OutputStream,可以向输出...

    Java实现的带密码压缩与解压zip文件源码

    在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。

    Java实现文件的压缩和解压

    基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...

Global site tag (gtag.js) - Google Analytics