千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > java压缩文件夹的方法

java压缩文件夹的方法

来源:千锋教育
发布人:xqq
时间: 2023-07-28 14:05:55 1690524355

Java提供了多种方法来压缩文件夹。下面将介绍两种常用的方法:使用ZipOutputStream和使用Apache Commons Compress库。

1. 使用ZipOutputStream:

import java.io.*;

import java.util.zip.*;

public class ZipFolderExample {

public static void main(String[] args) {

String sourceFolder = "path/to/source/folder";

String zipFile = "path/to/destination/zipfile.zip";

try {

FileOutputStream fos = new FileOutputStream(zipFile);

ZipOutputStream zos = new ZipOutputStream(fos);

zipFolder(sourceFolder, zos);

zos.close();

fos.close();

System.out.println("Folder successfully compressed to " + zipFile);

} catch (IOException e) {

e.printStackTrace();

}

}

private static void zipFolder(String sourceFolder, ZipOutputStream zos) throws IOException {

File folder = new File(sourceFolder);

if (!folder.exists()) {

throw new FileNotFoundException("Folder not found: " + sourceFolder);

}

File[] files = folder.listFiles();

if (files != null) {

for (File file : files) {

if (file.isDirectory()) {

zipFolder(file.getAbsolutePath(), zos);

} else {

byte[] buffer = new byte[1024];

FileInputStream fis = new FileInputStream(file);

zos.putNextEntry(new ZipEntry(file.getName()));

int length;

while ((length = fis.read(buffer)) > 0) {

zos.write(buffer, 0, length);

}

zos.closeEntry();

fis.close();

}

}

}

}

2. 使用Apache Commons Compress库:

import org.apache.commons.compress.archivers.zip.*;

import org.apache.commons.compress.utils.IOUtils;

import java.io.*;

import java.nio.file.*;

public class ZipFolderExample {

public static void main(String[] args) {

String sourceFolder = "path/to/source/folder";

String zipFile = "path/to/destination/zipfile.zip";

try {

FileOutputStream fos = new FileOutputStream(zipFile);

ZipArchiveOutputStream zos = new ZipArchiveOutputStream(fos);

zipFolder(sourceFolder, zos);

zos.close();

fos.close();

System.out.println("Folder successfully compressed to " + zipFile);

} catch (IOException e) {

e.printStackTrace();

}

}

private static void zipFolder(String sourceFolder, ZipArchiveOutputStream zos) throws IOException {

File folder = new File(sourceFolder);

if (!folder.exists()) {

throw new FileNotFoundException("Folder not found: " + sourceFolder);

}

File[] files = folder.listFiles();

if (files != null) {

for (File file : files) {

if (file.isDirectory()) {

zipFolder(file.getAbsolutePath(), zos);

} else {

ZipArchiveEntry entry = new ZipArchiveEntry(file, file.getName());

zos.putArchiveEntry(entry);

FileInputStream fis = new FileInputStream(file);

IOUtils.copy(fis, zos);

zos.closeArchiveEntry();

fis.close();

}

}

}

}

以上两种方法都可以将指定的文件夹及其子文件夹压缩为一个ZIP文件。你可以根据需要选择其中一种方法来使用。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT