Java 调用 winrar 命令 批处理 压缩包文件

简介: 本来想写一个界面批量写注释 批量给压缩包添加和删除文件,最近没时间了m,大概写了一下工具类,还没有简化,先记录下

本来想写一个界面批量写注释 批量给压缩包添加和删除文件,最近没时间了m,大概写了一下工具类,还没有简化,先记录下

package com.bdkjzx.winrar.util;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class BatUtil {
    private static List<File> fileList = new ArrayList<File>();
    private static Runtime cmd = Runtime.getRuntime();
    static String suffix = ".rar";
    private static String winrarPath="D:/WinRAR/WinRAR.exe";
    private static String isIbak=" -ibck ";//是否后台运行
    private static String rate="-m1"; //压缩比率 -m0   存储      添加到压缩文件时不压缩文件。-m1   最快    -m2   较快      -m3   标准    -m4   较好    -m5   最好  
    public static void main(String[] args) {
        String commandStr = "";
        String filePath = "F:/testwinrar2";
        try {
            File root = new File(filePath);
            extractFiles(root);
//          compressFiles(root);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    static List<File> getFiles(File root) {
        File[] files = root.listFiles();
        for (File childFile : files) {
            if (childFile.isDirectory()) {
                getFiles(childFile);
            } else {
                if (childFile.getName().endsWith(suffix)) {
                    fileList.add(childFile);
                }
            }
        }
        return fileList;
    }
    /**
     * 批量添加文件
     * 
     * @param root
     * @return
     */
    static boolean addFiles(File root) {
        File[] files = root.listFiles();
        for (File childFile : files) {
            if (childFile.isDirectory()) {
                getFiles(childFile);
            } else {
                if (childFile.getName().endsWith(suffix)) {
                    fileList.add(childFile);
                }
            }
        }
        return false;
    }
    /**
     * 批量解压文件
     * 
     * @param root
     * @return
     */
    static void extractFiles(File root) {
        File[] files = root.listFiles();
        String suffix = ".rar";
        boolean flag = false;
        try {
            for (File childFile : files) {
                if (childFile.isDirectory()) {
                    extractFiles(childFile);
                } else {
                    if (childFile.getName().endsWith(suffix)) {
                        String fPath = childFile.getAbsolutePath();
                        String path = childFile.getAbsolutePath()
                                .substring(0, childFile.getAbsolutePath().lastIndexOf(".")).replace("/", "/");
                        String commandStr = " cmd.exe /c mkdir " + path;
                        cmd.exec(commandStr);
                        commandStr = winrarPath+"  x  -y -ep1 -dr "+isIbak+ fPath + " " + path;
                        System.out.println(commandStr);
                        cmd.exec(commandStr);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 批量压缩文件
     * 
     * @param root
     * @return
     */
    static boolean compressFiles(File root) {
        File[] files = root.listFiles();
        try {
            for (File childFile : files) {
                if (childFile.isDirectory()) {
                    String fPath = childFile.getAbsolutePath();
                    String commandStr = winrarPath+"  a -s -ep1  -df -y "+isIbak + fPath + ".rar  " + fPath;
                    System.out.println(commandStr);
                    cmd.exec(commandStr);
                } else {
                    if(!childFile.getName().endsWith(suffix)){
                        String fPath = childFile.getAbsolutePath();
                        String path = childFile.getAbsolutePath()
                                .substring(0, childFile.getAbsolutePath().lastIndexOf(".")).replace("/", "/");
                        String commandStr = winrarPath+"  a  -s -ep1 -df -y "+rate+" " +isIbak+ path + ".rar  " + fPath;
                        System.out.println(commandStr);
                        cmd.exec(commandStr);
                    }
                }
            }
        } catch (Exception e) {
        }
        return false;
    }
}
目录
打赏
0
0
0
0
235
分享
相关文章
JUC并发—1.Java集合包底层源码剖析
本文主要对JDK中的集合包源码进行了剖析。
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
143 5
Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)
90 8
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
56 0
调试技巧 - 用Linux命令排查Java问题
总的来说,使用Linux命令来排查Java问题,需要一定的实践经验和理论知识。然而,只要我们愿意花时间深入了解这些工具,我们就能够熟练地使用它们来分析和解决问题。此外,这些工具只是帮助我们定位问题,真正解决问题需要我们对Java和JVM有深入的理解,并能够读懂和分析代码。
124 13
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
1485 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
193 17
java连接redis和基础操作命令
通过以上内容,您可以掌握在Java中连接Redis以及进行基础操作的基本方法,进而在实际项目中灵活应用。
243 30
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问