调用7z工具更新压缩包里的文件

这篇博客介绍了如何在Java程序中利用7z命令行工具来更新ZIP文件内的文件。代码示例展示了如何指定7z路径、更新文件路径及压缩包路径,通过执行7z命令来实现文件更新,并通过读取执行结果确认操作是否成功。
摘要由CSDN通过智能技术生成

当我们想要更新压缩包(zip, ear应该还包括很多)里的文件(包括文件夹)时,可以通过调用7z这个工具去完成。

注意:不能更新压缩包里某个文件夹下的文件。需要用到别的方法,比如:先把这个文件夹从压缩包提取出来,再对提取出来的文件夹下的文件做修改,最后再使用这个更新的方法替换里面旧的

 

import部分:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

 

代码:

    public static void updateZipFileByCall7z() {
        String filePathStr = "E:\\Test_JAVAProgram\\test7z\\testUpdateZipFile"; // 更新的文件夹
        String updateFilePath = "E:\\Test_JAVAProgram\\test7z\\testFile.txt"; // 更新的文件
        String zipToolPath = "D:\\7-Zip\\7z.exe"; // 7z工具路径
        String sourceFilePath = "E:\\Test_JAVAProgram\\test7z\\testUpdateZipFile.zip"; // 被更新的压缩包
//        String cmd = zipToolPath + " " + "u" + " " + sourceFilePath + " " + filePathStr;
        String cmd = zipToolPath + " " + "u" + " " + sourceFilePath + " " + updateFilePath;
        System.out.println(cmd);
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
            Process process = Runtime.getRuntime().exec(cmd);
            is = process.getInputStream();
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
            String line = null;
            while((line = br.readLine()) != null) {
                System.out.println(line);
                System.out.println(line.toLowerCase().indexOf("Everything is Ok".toLowerCase()));
                if(line.toLowerCase().indexOf("Everything is Ok".toLowerCase()) != -1) {
                    System.out.println("成功");
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(isr != null) {
                try {
                    isr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值