java调用7zip解压压缩包的实例
前言
最近的项目中需要用到解压缩包的功能,客户给出的压缩包的格式主要是rar和zip,因此就打算使用java调用7zip的命令行进行解压文件,本文主要记录一下实现的过程以及其中遇到的问题。
7zip命令行
7z <command> [<switches>...] <archive_name> [<file_names>...][<@listfiles...>]
7z的commands中包含添加文件到压缩包、从压缩包中删除文件以及提取文件等等多个命令,在这里我就不多赘述,有兴趣的可以在7zip的安装目录使用cmd运行7z.exe查看具体的命令。
今天我们要做的就是使用密码将压缩包中的文件提取出来,具体的命令如下:
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命令
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命令解释
• 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
文件路径中存在连续多个空格导致文件找不到
出现该问题是由于
Runtime.getRuntime().exec(command)
方法在执行过程中,会将文件路径中的多个连续空格转换为单个空格,这种情况在文件全路径外面加上双引号也是不管用的
解决方案:
• 替换文件路径中的空格,将每一个空格都替换为带有双引号的空格即可
以上这篇java调用7zip解压压缩包的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
java中GZIP压缩解压类使用实例
java中GZIP压缩解压类使用实例 当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩. 实例代码: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStr
-
Java压缩解压zip技术_动力节点Java学院整理
Java解压缩zip - 多个文件(包括文件夹),对多个文件和文件夹进行压缩,对复杂的文件目录进行解压.压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip,"abc",new File("d:/English"),new File("d:/发放数据.xls")); 测试文件目录结构: 测试的压缩内容:English文件夹和同级的两个excel文件 File[] files
-
java 解压与压缩文件夹的实例详解
java 解压与压缩文件夹的实例详解 注意:JDK7支持设置编码设置编码格式 zipFile,zipInputStream,zipOutputStream都增加了编码格式,如果是jdk1.6需要其他的包辅助 下面为自带jdk压缩文件夹代码: public void dozip(String srcfile, String zipfile) throws IOException { String temp = ""; File src = new File(srcfile); File
-
Java压缩/解压文件的实现代码
用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.zip.*; import javax.swing.*; //从压缩包中提取文件 public class ZipExtractDemo extends JFrame{ JFileChooser fileChooser; //文件选择器 JTextField jtfTarg
-
java使用gzip实现文件解压缩示例
复制代码 代码如下: package com.cjonline.foundation.cpe.action; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.
-
实例展示使用Java压缩和解压缩7z文件的方法
压缩为7z文件 首先网络上对7z的压缩内容很少. 尤其是java调用进行压缩的是更少了. 一下是自己完成的一个压缩. 本人进行了测试是成功的. 将压缩的流写如磁盘一个压缩文件中. 然后使用7z的压缩软件进行打开解压. 7-zip的开源项目7-zip-JBinding项目地址(sourceforge) 不多说,调用7z源码进行压缩的方法如下. public byte[] lzmaZip(String xml) throws IOException{ BufferedInputStream inSt
-
Java解压缩zip - 解压缩多个文件或文件夹实例
Java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip,"abc",new File("d:/English"),new File("d:/发放数据.xls")); 测试文件目录结构: 测试的压缩内容:English文件夹和同级的两个excel文件 File[]
-
Java 文件解压缩实现代码
Java实现压缩文件的解压缩操作,缺点是压缩文件内不能含有文件名为中文的的文件,否则会出现如下错误: 复制代码 代码如下: Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(Unknown Source) at java.util.zip.ZipInputStream.readLOC(Unknown Source) at
-
java调用7zip解压压缩包的实例
前言 最近的项目中需要用到解压缩包的功能,客户给出的压缩包的格式主要是rar和zip,因此就打算使用java调用7zip的命令行进行解压文件,本文主要记录一下实现的过程以及其中遇到的问题. 7zip命令行 7z <command> [<switches>...] <archive_name> [<file_names>...][<@listfiles...>] 7z的commands中包含添加文件到压缩包.从压缩包中删除文件以及提取文件等等多个命
-
详解python解压压缩包的五种方法
这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. tar: linux系统下的打包工具.仅仅打包.不压缩 tgz:即tar.gz.先用tar打包,然后再用gz压缩得到的文件 zip: 不同于gzip.尽管使用相似的算法,能够打包压缩多个文件.只是分别压缩文件.压缩率低于tar. rar:打包压缩文件.最初用于DOS,基于window操作系统. 压缩
-
java字符串压缩解压示例
我测试的字符串是JQuery源码. 明文长度:78082压缩后:26566加密长度:54746再压缩:41647-----------------------------密文长度:41647解压缩:54746解密后:26566再解压:78082-----------------------------比对成功 Des需要Jar:sun.misc.BASE64Decoder.jar Test 复制代码 代码如下: public static void main(String[] args) thr
-
Java 序列化详解及简单实现实例
一.序列化 序列化定义:序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数据. 目的: 以某种存储形式使自定义对象持久化 将对象从一个地方传递到另一个地方 二.Java序列化 一个对象能够序列化的前提是实现Serializable接口.Serializable接口没有方法,更像是个标记.有了这个标记的Class就能被序列化机制处理.如下: class myPoint implements Serializabl
-
Java 事务详解及简单应用实例
Java事务的简单使用 Java事务在一些面试中会被问到. 面试的时候,我们首先要回答的是:事务能够保证数据的完整性和一致性. 如果功力深厚点的话:就说一些原理(任务开始前先设置不提交任务,在所有任务完成后再提交任务, 如果任务在中间断开,就执行回滚,撤销前面执行的任务),简单一点就举个的例子(比如存钱和取钱的问题. 比如:银行在两个账户之间转账,从A账户转入B账户1000元,系统先减少A账户的1000元,然后再为B账号增加1000元.如果全部执行成功,数据库处于一致性:如果仅执行完A账户金额
-
Java调用DOS实现定时关机的实例
复制代码 代码如下: public static void shutdown(){ System.out.print("请输入多少分钟后关机:"); Scanner scanner = new Scanner(System.in); int minute = scanner.nextInt()*60; Runtime runtime = Runtime.getRuntime(); String shutdown = &qu
-
用python批量解压带密码的压缩包
项目地址: https://github.com/Mario-Hero/toolUnRar 环境需求 Windows系统 Python 3 对于解压RAR文件,需要安装WinRAR 对于解压7z/zip等其他7-Zip支持解压的文件,需要安装7-Zip 用法 Usage 直接拖入文件夹或压缩文件即可批量解压缩包含密码的压缩文件.如果拖入的是文件夹,则会把该文件夹下的压缩文件解压缩,但不进入下一级目录.通过设置PASSWD来设置字典,通过设置DELETEIT来设置解压后是否删除被成功解压的压缩文件
-
Java 字符串压缩与解压的开发记录
目录 1.场景: 2.CompressUtil类: 3.注意点: 4.单元测试: 1.场景: 由于数据库字段长度有限,并且不能随意的修改数据库字段的配置,数据库的某个字段设置的长度可能在设置初期是满足需求的,后期由于业务变更或业务量增大导致该字段存储的数据增长,落库时可能因为该字段数据长度过长导致落库失败,基于这种场景我们就有必要进行字符串的压缩,然后再进行落库,而落库后取出数据使用时再进行解压即可. 2.CompressUtil类: 使用Java8中的gzip来进行实现 import lomb
-
java实现哈夫曼压缩的实例
哈夫曼压缩的原理: 通过统计文件中每个字节出现的频率,将8位的01串转换为位数较短的哈夫曼编码. 其中哈夫曼编码是根据文件中字节出现的频率构建的,其中出现频率越高的字节,其路径长度越短; 出现频率越低的字节其路径长度越长.从而达到压缩的目的. 如何构造哈夫曼树? 一. 定义字节类 我的字节类定义了一下属性 public int data;//节点数据 public int weight;//该节点的权值 public int point;//该节点所在的左右位置 0-左 1-右 privat
随机推荐
- 使用Ajax实现简单的带百分比进度条实例
- 在 XSL/XSLT 中实现随机排序
- jquery动态遍历Json对象的属性和值的方法
- nodejs中安装ghost出错的原因及解决方法
- java中 利用正则表达式提取( )内内容
- Session保存到数据库的php类分享
- Python的GUI框架PySide的安装配置教程
- python中的错误处理
- Android-自定义控件之ListView下拉刷新的实现
- MySQL replace into 语句浅析(二)
- c#实现摄像头拍照功能示例
- Discuz!NT 论坛整合ASP程序论坛教程
- C# 中的EventHandler实例详解
- IIS下PHP运行环境搭建与网页服务器故障排查方法
- 主板常见故障分析与解决方案
- 实现nginx&php服务器配置的非主流配置方法
- 为百度UE编辑器上传图片添加水印功能
- Android 仿摩拜单车共享单车进度条实现StepView效果
- 浅谈React之状态(State)
- 快速解决安卓7.0系统写入SD卡权限失败的问题