java解压rar5 兼容rar4(改bug)
本篇是为修改原作者bug,原作者:java解压rar5 兼容rar4_So straw?-CSDN博客
在我测试时发现bug,此方法
public int write(byte[] data) throws SevenZipException {try {if (!isFolder) {System.out.println(path);File file = new File(ourDir + path);save2File(file, data);}} catch (Exception e) {e.printStackTrace();}return data.length;}
在解压过程中有些文件会获取多个byte[],save2File()只写入了最后一组byte[],导致字节缺失。(原因没有深究,猜测是byte[]缓冲大小限制)
修改方法如下:
@Overridepublic ISequentialOutStream getStream(int index, ExtractAskMode extractAskMode) throws SevenZipException {this.index = index;final String path = (String) inArchive.getProperty(index, PropID.PATH);final boolean isFolder = (boolean) inArchive.getProperty(index, PropID.IS_FOLDER);final String[] oldPath = {""};return new ISequentialOutStream() {public int write(byte[] data) throws SevenZipException {try {if (!isFolder) { // System.out.println(path);File file = new File(ourDir+"\\" + path);if (path.equals(oldPath[0])){save2File(file, data,true);}else{save2File(file, data,false);}oldPath[0] = path;}} catch (Exception e) {e.printStackTrace();}return data.length;}};}
public boolean save2File(File file, byte[] msg,boolean append) {OutputStream fos = null;try {File parent = file.getParentFile();boolean bool;if ((!parent.exists()) && (!parent.mkdirs())) {return false;} // fos = new FileOutputStream(file);fos = new FileOutputStream(file,append);//是否追加fos.write(msg);fos.flush();return true;} catch (FileNotFoundException e) {return false;} catch (IOException e) {File parent;return false;} finally {if (fos != null) {try {fos.close();} catch (IOException e) {}}}}
这样就解决了字节缺失问题。
java解压rar5 兼容rar4(改bug)相关推荐
- java解压rar5 兼容rar4
才发现java库没有对rar5压缩算法实现,网上找了一大堆资料,基本都是调用命令的方式,要集成到项目里是很麻烦的,所以一直奔着java解压rar5的目标去找,终于在github上找到了已经实现好的库, ...
- JAVA解压RAR5压缩包
import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader; import java.io.File; import java.io. ...
- Java解压rar5压缩文件
使用代码解压压缩文件,并指定解压后路径 导入依赖 <dependency><groupId>com.github.axet</groupId><artifac ...
- java zip malformed_关于Java解压文件的一些坑及经验分享(MALFORMED异常)
关于Java解压文件的一些坑及经验分享 就在本周, 测试人员找到我说现上的需求文档(zip格式的)无法预览了, 让我帮忙看看怎么回事. 这个功能也并不是我做的, 于是我便先看看线上日志有没有什么错误, ...
- Java解压文件Zip,War,Tar,TarGz格式
Java压缩和解压缩 压缩和解压缩依赖 关于Java解压Zip文件的java.lang.IllegalArgumentException:MALFORMED报错问题. 解压缩代码 Zip解压缩 War ...
- gz解压java,java 解压gz
场景: java解压gz文件,这个是在linux下实验过的 下面是网上的代码 http://www.iteye.com/topic/894879 import java.io.FileInputStr ...
- Java解压Jar文件
今天写点java解压jar文件的东西,以前项目中用到过,很简单... java中有专门的文件类型对应jar文件,那就是JarFile,用于从任何可以使用java.io.RandomAccessFile ...
- java解压报错java.io.IOException: failed to skip current tar entry
#java解压出现java.io.IOException: failed to skip current tar entry 当使用如下函数解压: AntBuilder antBuilder = ne ...
- java 解压tgz文件
java 解压tgz文件 pom 引入依赖 <dependency><groupId>org.apache.commons</groupId><artifac ...
最新文章
- Auto ML自动特征工程
- python中操作mysql数据库CRUD(增、删、改、查)
- 我的第一个Python程序
- linux 信号传递函数,Linux Shell之七 函数应用
- 简述大数据的数据管理方式_智能销售服务商荣登TOP100榜,大数据线上获客方式再得认可...
- hadoop hdfs 集群配置
- CodeForces - 1517B Morning Jogging
- C#继承(初始化基类,重写,重载)
- scare机器人如何手眼标定_SCARA机器人手眼标定之目标抓取
- c语言:8、makeFile编写
- 为什么抖音网红城市都在西部?
- java生成zipf分布_统计分布-Zipf分布
- 修改Linux系统最大TCP连接数限制
- 如何让OpenwrtX86和win7双系统共存在一块硬盘
- 电压监测器:线性稳压IC 台湾合泰LDO系列
- 阿里数据仓库架构与模型设计
- 8.4 向量应用(二)——空间直线
- 【C语言】通讯录——源代码
- Field brandService in cn.est.service.impl.HomeServiceImpl required a bean of type ‘cn.est.service.Br
- 数据迁移的高招!两台笔记本电脑怎么互传文件