下面是Java创建ZIP压缩文件的方法的完整攻略,包含过程及两条示例代码,希望能对你有所帮助。
1. 创建ZIP压缩文件的方法
Java提供了ZipOutputStream类来实现创建ZIP文件的功能。ZipOutputStream类是一个过滤器流,它可以将数据写入Zip文件中,并且支持压缩。下面是创建ZIP文件的步骤:
- 创建ZipOutputStream对象,并设置压缩级别:
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream("test.zip"));
zipOut.setLevel(Deflater.DEFAULT_COMPRESSION);
这里的参数"test.zip"表示压缩文件的名称,Deflater.DEFAULT_COMPRESSION表示压缩级别。
- 创建ZipEntry对象:
ZipEntry entry = new ZipEntry("test.txt");
这里的参数"test.txt"表示要压缩的文件名。
- 将ZipEntry对象加入到ZipOutputStream对象中:
zipOut.putNextEntry(entry);
- 写入数据到ZipOutputStream对象:
zipOut.write(buffer, 0, len);
这里的参数buffer是要写入Zip文件的数据,参数len是数据的长度。
- 关闭ZipEntry对象:
zipOut.closeEntry();
- 关闭ZipOutputStream对象:
zipOut.close();
2. 示例1:压缩单个文件
import java.io.*;
import java.util.zip.*;
public class ZipFileExample {
public static void main(String[] args) throws Exception {
// 定义要压缩的文件
File file = new File("test.txt");
// 定义压缩文件的名称
String zipFileName = "test.zip";
// 创建ZipOutputStream对象,并设置压缩级别
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFileName));
zipOut.setLevel(Deflater.DEFAULT_COMPRESSION);
// 创建ZipEntry对象
ZipEntry entry = new ZipEntry(file.getName());
// 将ZipEntry对象加入到ZipOutputStream对象中
zipOut.putNextEntry(entry);
// 写入数据到ZipOutputStream对象
FileInputStream in = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
zipOut.write(buffer, 0, len);
}
in.close();
// 关闭ZipEntry对象
zipOut.closeEntry();
// 关闭ZipOutputStream对象
zipOut.close();
}
}
3. 示例2:压缩文件夹
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class ZipDirExample {
public static void main(String[] args) throws Exception {
// 定义要压缩的文件夹
File dir = new File("files");
// 定义压缩文件的名称
String zipFileName = "files.zip";
// 创建ZipOutputStream对象,并设置压缩级别
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFileName));
zipOut.setLevel(Deflater.DEFAULT_COMPRESSION);
// 压缩文件夹
zipFiles(dir.listFiles(), dir.getName(), zipOut);
// 关闭ZipOutputStream对象
zipOut.close();
}
private static void zipFiles(File[] files, String path, ZipOutputStream zipOut) throws Exception {
// 如果目录为空,则返回
if (files == null) {
return;
}
// 遍历文件夹中的文件
for (File file : files) {
if (file.isDirectory()) {
// 如果是目录,则递归调用zipFiles函数进行压缩
zipFiles(file.listFiles(), path + "/" + file.getName(), zipOut);
} else {
// 如果是文件,则压缩文件
FileInputStream in = new FileInputStream(file);
ZipEntry entry = new ZipEntry(path + "/" + file.getName());
zipOut.putNextEntry(entry);
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
zipOut.write(buffer, 0, len);
}
in.close();
zipOut.closeEntry();
}
}
}
}
以上就是Java创建ZIP压缩文件的完整攻略,希望能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java创建ZIP压缩文件的方法 - Python技术站