温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java中怎么利用7zip对压缩包进行解压的

发布时间:2020-12-07 16:17:56 来源:亿速云 阅读:146 作者:Leah 栏目:编程语言

java中怎么利用7zip对压缩包进行解压的?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

7zip命令行

7z <command> [<switches>...] <archive_name> [<file_names>...][<@listfiles...>]

7z的commands中包含添加文件到压缩包、从压缩包中删除文件以及提取文件等等多个命令,在这里我就不多赘述,有兴趣的可以在7zip的安装目录使用cmd运行7z.exe查看具体的命令。

今天我们要做的就是使用密码将压缩包中的文件提取出来,具体的命令如下:

7z x 压缩文件源路径 -o要解压的路径 -aoa -bse1 -p密码

&#8226; x : 表示从压缩包中提取文件

&#8226; -aoa : ao表示覆盖模式,最后的a表示直接覆盖现有文件而不需要任何提示

&#8226; -bs < o|e|p > < 0|1|2 >:set output stream for output/error/progress line

-bs命令其实我没有太明白,字面的意思大概是说为输出/错误/进程行设置输出流,如果不设置-bse1属性,当解压缩出现错误,例如文件找不到时,错误提示就会出现在cmd窗口中而不是生成的log文件中,因此必须加上-bse1命令

java通过cmd调用7zip解压

String filePath = "F:\\test\\新建 文本 文档.rar";
//将文件名称中的所有空格都替换为带有双引号的空格
filePath = filePath.replaceAll(" ", "\" \""); 

String command = "cmd /c start /B D:/工具/7zip/7-Zip/7z.exe x "+filePath+" -oF:/test/ -aoa -bse1 -p123 >F:/test/1.txt";
System.out.println(command);
Runtime.getRuntime().exec(command);

cmd命令解释

&#8226; cmd /c start 7z.exe 表示会启动7z来执行后面的命令,7z启动以后原来的cmd窗口会关闭

&#8226; cmd /k start 7z.exe 表示会启动7z来执行后面的命令,7z启动以后原来的cmd窗口不会关闭

&#8226; /B 表示启动应用程序,但是并不创建新的窗口

通过以上的代码就可以解压完成压缩包文件,如果要知道解压的密码是否正确或者压缩包是否损坏等信息,可以通过获取生成txt日志文件的内容来得知,这个不在本篇范围之后,后续再说。

遇到的问题

7z.exe文件路径找不到

出现该问题是由于7zip的安装路径中存在空格

解决方案:

&#8226; 选择7zip安装路径,不要安装在有空格的路径中

&#8226; 将路径中的空格使用双引号引起来,如C:“Program Files”\7-Zip或者“C:\Program Files\7-Zip”或者C:\Program“ ”Files\7-Zip

文件路径中存在连续多个空格导致文件找不到

出现该问题是由于

Runtime.getRuntime().exec(command)

方法在执行过程中,会将文件路径中的多个连续空格转换为单个空格,这种情况在文件全路径外面加上双引号也是不管用的

解决方案:

替换文件路径中的空格,将每一个空格都替换为带有双引号的空格即可

关于java中怎么利用7zip对压缩包进行解压的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI