云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

java实现压缩文件

可以使用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方法,压缩文件将被保存到指定的路径。

打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《java实现压缩文件》
文章链接:https://www.yunzhuji.net/internet/178771.html

评论

  • 验证码