前言
最近的项目中需要用到解压缩包的功能,客户给出的压缩包的格式主要是rar和zip,因此就打算使用java调用7zip的命令行进行解压文件,本文主要记录一下实现的过程以及其中遇到的问题。
7zip命令行
|
1
|
7z <command> [<switches>...] <archive_name> [<file_names>...][<@listfiles...>]
|
7z的commands中包含添加文件到压缩包、从压缩包中删除文件以及提取文件等等多个命令,在这里我就不多赘述,有兴趣的可以在7zip的安装目录使用cmd运行7z.exe查看具体的命令。
今天我们要做的就是使用密码将压缩包中的文件提取出来,具体的命令如下:
|
1
|
7z x 压缩文件源路径 -o要解压的路径 -aoa -bse1 -p密码
|
• x : 表示从压缩包中提取文件
• -aoa : ao表示覆盖模式,最后的a表示直接覆盖现有文件而不需要任何提示
• -bs < o|e|p > < 0|1|2 >:set output stream for output/error/progress line
-bs命令其实我没有太明白,字面的意思大概是说为输出/错误/进程行设置输出流,如果不设置-bse1属性,当解压缩出现错误,例如文件找不到时,错误提示就会出现在cmd窗口中而不是生成的log文件中,因此必须加上-bse1命令
|
1
2
3
4
5
6
7
|
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命令解释
• cmd /c start 7z.exe 表示会启动7z来执行后面的命令,7z启动以后原来的cmd窗口会关闭
• cmd /k start 7z.exe 表示会启动7z来执行后面的命令,7z启动以后原来的cmd窗口不会关闭
• /B 表示启动应用程序,但是并不创建新的窗口
通过以上的代码就可以解压完成压缩包文件,如果要知道解压的密码是否正确或者压缩包是否损坏等信息,可以通过获取生成txt日志文件的内容来得知,这个不在本篇范围之后,后续再说。
遇到的问题
7z.exe文件路径找不到
出现该问题是由于7zip的安装路径中存在空格
解决方案:
• 选择7zip安装路径,不要安装在有空格的路径中
• 将路径中的空格使用双引号引起来,如C:“Program Files”\\7-Zip或者“C:\\Program Files\\7-Zip”或者C:\\Program“ ”Files\\7-Zip
文件路径中存在连续多个空格导致文件找不到
出现该问题是由于
|
1
|
Runtime.getRuntime().exec(command)
|
方法在执行过程中,会将文件路径中的多个连续空格转换为单个空格,这种情况在文件全路径外面加上双引号也是不管用的
解决方案:
• 替换文件路径中的空格,将每一个空格都替换为带有双引号的空格即可
以上这篇java调用7zip解压压缩包的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。
原文链接:http://www.cnblogs.com/liaidai/p/7592788.html
相关文章
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-26 66
-
2025-05-27 61
-
2025-05-25 86
-
解决SpringMvc后台接收json数据中文乱码问题的几种方法
2025-05-29 43 -
2025-05-29 13

