import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author zhaoliangyuan
* @E-mail zhao19860603@163.com
* @dateTime 2010/7/20 上午 10:44:50 类说明:
* 壓縮文件
*/
public class Test24 {
public static void main(String[] args) {
Test24 recursiveZip = new Test24();
System.out.println("====開始====");
try {
OutputStream os = new FileOutputStream("D:/test.rar");
BufferedOutputStream bs = new BufferedOutputStream(os);
ZipOutputStream zo = new ZipOutputStream(bs);
// recursiveZip.zip("e:/recursive-zip/中文文件名.txt", new
// File("e:/recursive-zip"), zo, true, true);
recursiveZip.zip("D:/temp", new File("D:/temp"), zo, true, true);
zo.closeEntry();
zo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("====完成====");
}
/**
* @param path
* 要压缩的路径, 可以是目录, 也可以是文件.
* @param basePath
* 如果path是目录,它一般为new File(path), 作用是:使输出的zip文件以此目录为根目录,
* 如果为null它只压缩文件, 不解压目录.
* @param zo
* 压缩输出流
* @param isRecursive
* 是否递归
* @param isOutBlankDir
* 是否输出空目录, 要使输出空目录为true,同时baseFile不为null.
* @throws IOException
*/
public void zip(String path, File basePath, ZipOutputStream zo, boolean isRecursive, boolean isOutBlankDir) throws IOException {
File inFile = new File(path);
File[] files = new File[0];
if (inFile.isDirectory()) { // 是目录
files = inFile.listFiles();
} else if (inFile.isFile()) { // 是文件
files = new File[1];
files[0] = inFile;
}
byte[] buf = new byte[1024];
int len;
// System.out.println("baseFile: "+baseFile.getPath());
for (int i = 0; i < files.length; i++) {
String pathName = "";
if (basePath != null) {
if (basePath.isDirectory()) {
pathName = files[i].getPath().substring(basePath.getPath().length() + 1);
} else {// 文件
pathName = files[i].getPath().substring(basePath.getParent().length() + 1);
}
} else {
pathName = files[i].getName();
}
System.out.println(pathName);
if (files[i].isDirectory()) {
if (isOutBlankDir && basePath != null) {
zo.putNextEntry(new ZipEntry(pathName + "/")); // 可以使空目录也放进去
}
if (isRecursive) { // 递归
zip(files[i].getPath(), basePath, zo, isRecursive, isOutBlankDir);
}
} else {
FileInputStream fin = new FileInputStream(files[i]);
zo.putNextEntry(new ZipEntry(pathName));
while ((len = fin.read(buf)) > 0) {
zo.write(buf, 0, len);
}
fin.close();
}
}
}
}
分享到:
相关推荐
java压缩文件的程序代码,可以压缩单个文件夹,单个标准文件,多个标准文件 多个文件夹,以及文件夹和文件混合的压缩代码
java批量压缩文件跟文件夹,目前还不支持中文名,后期会改进,谢谢
本文将深入探讨如何使用Java来处理压缩文件,特别是针对标题提及的“java压缩文件以及文件夹”。我们将主要关注`ZipCompressor.java`这个类,它是实现文件和文件夹压缩的核心工具。 首先,让我们了解`java.util.zip...
在Java编程语言中,压缩文件是一项常见的任务,用于减少文件的存储空间,提高传输效率。HUFFMAN编码是一种数据压缩算法,它基于字符频率构建一棵最优的二叉树来进行编码,广泛应用于文本压缩。本节将详细介绍如何在...
压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者""....
### Java压缩文件代码详解:基于Zip格式的文件压缩技术 #### 概述 在Java编程中,处理文件压缩是一项常见的需求,特别是在数据传输、存储优化或归档管理方面。Java标准库提供了强大的压缩功能,其中最常用的是基于...
工具类中提供的方法有:压缩单个文件,压缩多个文件,解压文件到制定路径下。获取压缩文件的文件列表。压缩文件的文件注释。
java压缩文件及解压的算法。方法使用见main函数
### Java压缩文件目录成ZIP包最新技巧 在Java开发中,对文件或目录进行压缩是一项常见且实用的功能。本文将详细介绍如何使用`java.util.zip`包中的类来压缩文件及目录,并解决其中的一个常见问题——中文文件名或...
标题提到的"java压缩文件时的依赖jar包"很可能指的是用来解决此类问题的特定库。在这种情况下,`ant.jar`是一个关键的角色,它是Apache Ant项目的组成部分,它是一个基于Java的任务执行框架,常用于构建和部署项目,...
2. **压缩文件**: 使用`ZipOutputStream`,你可以将文件或目录添加到ZIP文件中。首先,创建一个`ZipOutputStream`实例,然后通过调用`putNextEntry`方法开始新的`ZipEntry`,接着使用`write`方法写入文件数据,最后...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包
解决java压缩zip文件时的中文乱码问题 ...实现:java压缩文件成zip实现无乱码。 包括:写好的工具类与jar包。 使用方法:导入ant.jar包,调用CompressExcelOperate中的方法,即可实现压缩文件,并保证没有中文乱码。
zipEntry.setComment("压缩文件"); // 可以添加注释,同样需要指定字符集 zos.putNextEntry(zipEntry); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { byte[] buffer...
2、指定文件夹(文件夹中必须有一个文件),程序会自动的压缩文件为 zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):...