You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Java调用WinZip命令单独压缩每个TXT文件

实现单个TXT文件独立压缩为Zip的Java方案

要实现每个TXT文件单独压缩成独立Zip,核心思路是遍历目标目录下的所有TXT文件,为每个文件单独调用WinZip命令,具体实现步骤如下:

关键修改点

  1. 先遍历指定目录下的所有.txt文件,排除子目录(如需处理子目录可调整遍历逻辑)
  2. 对每个TXT文件,生成对应的Zip文件名(比如test.txt对应test.zip)
  3. 为每个文件单独构造WinZip命令,去掉原命令中的-r(递归参数,单个文件不需要)
  4. 执行命令时等待进程完成,避免异步导致的异常

完整代码示例

import java.io.File;
import java.io.IOException;

public class SingleFileZip {
    public static void main(String[] args) {
        // 指定要处理的目录(可替换为自定义路径,比如"C:\\your\\txt\\folder")
        File txtDir = new File(".");
        // WinZip的执行文件路径,根据实际安装路径调整
        String winZipPath = "C:\\Program Files\\WinZip\\winzip64";

        // 遍历目录下的所有TXT文件
        File[] txtFiles = txtDir.listFiles((dir, name) -> name.toLowerCase().endsWith(".txt"));
        if (txtFiles == null || txtFiles.length == 0) {
            System.out.println("未找到任何TXT文件");
            return;
        }

        Runtime rt = Runtime.getRuntime();
        System.out.println("开始逐个压缩TXT文件...");

        for (File txtFile : txtFiles) {
            // 生成对应的Zip文件名:将.txt后缀替换为.zip
            String zipFileName = txtFile.getName().replace(".txt", ".zip");
            // 构造WinZip命令:-a表示添加文件,-en表示使用标准压缩级别
            String[] command = {
                winZipPath,
                "-a",
                "-en",
                zipFileName,
                txtFile.getAbsolutePath()
            };

            try {
                Process process = rt.exec(command);
                // 等待压缩进程执行完成
                int exitCode = process.waitFor();
                if (exitCode == 0) {
                    System.out.println("已完成压缩:" + txtFile.getName() + " -> " + zipFileName);
                } else {
                    System.out.println("压缩失败:" + txtFile.getName() + ",退出码:" + exitCode);
                }
            } catch (IOException | InterruptedException e) {
                System.err.println("处理文件" + txtFile.getName() + "时出错:");
                e.printStackTrace();
            }
        }
        System.out.println("所有文件压缩完成");
    }
}

代码说明

  • 目录遍历:使用listFiles结合过滤器,只筛选后缀为.txt的文件
  • 命令构造:每个命令针对单个TXT文件,输出Zip文件名与原TXT文件名对应,去掉了原命令中的-r(递归参数,单个文件无需使用)
  • 进程等待:调用process.waitFor()等待WinZip进程执行完毕,确保每个文件压缩完成后再处理下一个,避免资源冲突
  • 异常处理:分别捕获IO异常和中断异常,输出具体出错的文件名,便于排查问题

内容的提问来源于stack exchange,提问作者Akshatha S M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:45:27