可以使用Java的ZipOutputStream类实现压缩文件,将需要压缩的文件添加到ZipOutputStream中,然后关闭流即可。
Java实现压缩文件
1. 引入依赖
在项目的pom.xml
文件中添加以下依赖:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commonscompress</artifactId> <version>1.21</version> </dependency>
2. 编写压缩文件的方法
import org.apache.commons.compress.archivers.ArchiveEntry; import org.apache.commons.compress.archivers.ArchiveOutputStream; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipFile; import org.apache.commons.compress.utils.IOUtils; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class FileCompressor { public static void main(String[] args) throws IOException { String sourceDirectory = "src/main/resources/files"; String outputZipFile = "src/main/resources/files.zip"; compressDirectory(sourceDirectory, outputZipFile); } /** * 压缩指定目录到ZIP文件 * * @param sourceDirectory 要压缩的目录 * @param outputZipFile 输出的ZIP文件路径 * @throws IOException */ public static void compressDirectory(String sourceDirectory, String outputZipFile) throws IOException { Path sourceDirPath = Paths.get(sourceDirectory); try (FileOutputStream fos = new FileOutputStream(outputZipFile); ArchiveOutputStream zos = new ArchiveStreamFactory().createArchiveOutputStream("zip", fos)) { Files.walk(sourceDirPath).filter(path > !Files.isDirectory(path)).forEach(path > { ZipArchiveEntry zipEntry = new ZipArchiveEntry(sourceDirPath.relativize(path).toString()); try { zos.putArchiveEntry(zipEntry); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path.toFile()))) { IOUtils.copy(bis, zos); } zos.closeArchiveEntry(); } catch (IOException e) { e.printStackTrace(); } }); } } }
3. 使用说明
1、将上述代码添加到项目中。
2、修改sourceDirectory
变量为要压缩的目录路径。
3、修改outputZipFile
变量为输出的ZIP文件路径。
4、运行main
方法,压缩文件将被保存到指定的路径。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/643487.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复