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实现视频压缩"这个项目中,可能会包含以下步骤: 1. **读取视频文件**:使用Java的FileInputStream或相关的多媒体库,读取原始视频文件的数据。 2. **解析视频流**:利用JMF或Xuggler,解析视频流中的每一...
java实现多个文件压缩
4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流,写入数据到压缩流,以及从压缩流中读取和写入文件等步骤。 5. **文件操作**:在...
本文将详细讲解如何使用Java实现将多目录多层级的文件打成ZIP包,以及如何解压这些ZIP包。我们将主要关注`FileUtils.java`这个类,以及依赖的`commons-compress-1.1.jar`库。 `commons-compress-1.1.jar`是Apache ...
### Java 实现多个文件压缩成 RAR 压缩包 #### 背景与目的 在日常工作中,经常会遇到需要将多个文件压缩为一个压缩包的情况,以便于存储、传输或备份。Java 作为一种广泛使用的编程语言,在处理文件操作方面提供了...
在标题中提到的"java实现对文件或文件夹的压缩和解压缩",我们可以使用这个库来实现。具体来说,我们可以创建一个`ZipUtil`类,里面包含压缩和解压缩的静态方法。 首先,为了压缩文件或文件夹,我们需要使用`org....
ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。
6. **类的设计**:`Work5`, `Work5_new`, `OneTest`, `JieMu`等可能是实现文件分割和压缩功能的具体类。它们可能包含了主函数、方法以及一些辅助类来完成文件处理任务。 7. **测试**:`OneTest`类很可能包含了单元...
以下是对"JAVA实现的文件压缩"这一主题的详细讲解。 1. **Java SWING简介** Java SWING是Java Foundation Classes (JFC)的一部分,提供了一组丰富的图形用户界面(GUI)组件,用于创建桌面应用。它基于Java AWT...
5. **代码实现**:使用Java实现上述功能,首先需要导入必要的库,如`minio-java`(MinIO的Java SDK)和可能的HTTP客户端库。以下是一般步骤: - 配置MinIO客户端,连接到服务器。 - 获取目标文件列表。 - 创建`...
在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...
在Java编程语言中,我们...总的来说,Java中的ZIP压缩和解压缩功能强大且易于使用,是开发人员处理文件压缩需求的首选工具。通过熟练掌握`java.util.zip`包,你可以轻松地在Java应用程序中实现文件的压缩和解压缩功能。
该工具类可以实现以下几个功能 1、得到有效文件的长度(即大小),以字节表示 getFileSize(String filePath),需要传入文件路径 2、可以上传图片与非图片文件。有二个重构方法 一、无限制文件大小上传upLoad(String...
### Spring Boot中使用Java实现文件批量下载与压缩功能 #### 一、背景介绍 在Web应用开发中,经常需要提供给用户批量下载的功能,尤其是在文件管理或者文档分享等场景下。传统的做法是一次只下载一个文件,这不仅...
本文主要介绍如何使用Java实现文件的ZIP压缩功能,并提供了完整的代码示例。通过学习本文,你可以掌握以下几个知识点: 1. 使用`java.util.zip`包中的类进行文件压缩。 2. 如何创建ZIP输出流并写入文件数据。 3. ...
在Java中,我们可以使用java.util.zip包中的ZipOutputStream和ZipInputStream类来实现文件的压缩和解压缩。 ### ZIP文件压缩 1. **创建ZipOutputStream对象**:这是压缩的核心,它继承自OutputStream,可以向输出...
在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。
基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...