Java实现压缩文件和文件夹为zip格式,提供两种代码。
1.压缩单个文件为zip格式,这里以D:\File下的a.txt为例,将目标文件压缩为D:\下的a.zip:
package fileZip;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class fileZipDome1 {
public static void main(String[] args) throws IOException {
//创建源文件对象
File src = new File("D:\\FIle\\a.txt");
//创建目标文件对象
File dest = new File("D:\\File");
toZip(src, dest);
}
private static void toZip(File src, File dest) throws IOException {
//创建目的压缩文件
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(dest, "a.zip")));
//创建ZipEntry对象表示每个文件
ZipEntry entry = new ZipEntry("a.txt");
zos.putNextEntry(entry);
FileInputStream fis = new FileInputStream(src);
int b;
while ((b = fis.read()) != -1) {
zos.write(b);
}
zos.closeEntry();
zos.close();
}
}
运行结果:
2.压缩文件夹为zip格式
package fileZip;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class fileZipDome2 {
public static void main(String[] args) throws IOException {
//定义源文件
File src = new File("D:\\File\\aaa");
//定义源文件的父级路径
File destParent = src.getParentFile();//D:\File
//定义目的文件路径
File dest = new File(destParent, src.getName() + ".zip");
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(dest));
toZip(src, zos, src.getName());
zos.close();
}
//定义方法实现文件的压缩功能
private static void toZip(File src, ZipOutputStream zos, String name) throws IOException {
File[] files = src.listFiles();
if (files != null) {
//遍历文件夹中的所有文件及文件夹
for (File file : files) {
if (file.isFile()) {
//当前file是文件
ZipEntry entry = new ZipEntry(name + "\\" + file.getName());
zos.putNextEntry(entry);
FileInputStream fis = new FileInputStream(file);
int b;
while ((b = fis.read()) != -1) {
zos.write(b);
}
fis.close();
zos.closeEntry();
} else {
//当前file是文件啊夹
toZip(file, zos, name + "\\" + file.getName());
}
}
}
}
}
运行结果: