本篇是为修改原作者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)相关推荐

  1. java解压rar5 兼容rar4

    才发现java库没有对rar5压缩算法实现,网上找了一大堆资料,基本都是调用命令的方式,要集成到项目里是很麻烦的,所以一直奔着java解压rar5的目标去找,终于在github上找到了已经实现好的库, ...

  2. JAVA解压RAR5压缩包

    import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader; import java.io.File; import java.io. ...

  3. Java解压rar5压缩文件

    使用代码解压压缩文件,并指定解压后路径 导入依赖 <dependency><groupId>com.github.axet</groupId><artifac ...

  4. java zip malformed_关于Java解压文件的一些坑及经验分享(MALFORMED异常)

    关于Java解压文件的一些坑及经验分享 就在本周, 测试人员找到我说现上的需求文档(zip格式的)无法预览了, 让我帮忙看看怎么回事. 这个功能也并不是我做的, 于是我便先看看线上日志有没有什么错误, ...

  5. Java解压文件Zip,War,Tar,TarGz格式

    Java压缩和解压缩 压缩和解压缩依赖 关于Java解压Zip文件的java.lang.IllegalArgumentException:MALFORMED报错问题. 解压缩代码 Zip解压缩 War ...

  6. gz解压java,java 解压gz

    场景: java解压gz文件,这个是在linux下实验过的 下面是网上的代码 http://www.iteye.com/topic/894879 import java.io.FileInputStr ...

  7. Java解压Jar文件

    今天写点java解压jar文件的东西,以前项目中用到过,很简单... java中有专门的文件类型对应jar文件,那就是JarFile,用于从任何可以使用java.io.RandomAccessFile ...

  8. java解压报错java.io.IOException: failed to skip current tar entry

    #java解压出现java.io.IOException: failed to skip current tar entry 当使用如下函数解压: AntBuilder antBuilder = ne ...

  9. java 解压tgz文件

    java 解压tgz文件 pom 引入依赖 <dependency><groupId>org.apache.commons</groupId><artifac ...

最新文章

  1. Auto ML自动特征工程
  2. python中操作mysql数据库CRUD(增、删、改、查)
  3. 我的第一个Python程序
  4. linux 信号传递函数,Linux Shell之七 函数应用
  5. 简述大数据的数据管理方式_智能销售服务商荣登TOP100榜,大数据线上获客方式再得认可...
  6. hadoop hdfs 集群配置
  7. CodeForces - 1517B Morning Jogging
  8. C#继承(初始化基类,重写,重载)
  9. scare机器人如何手眼标定_SCARA机器人手眼标定之目标抓取
  10. c语言:8、makeFile编写
  11. 为什么抖音网红城市都在西部?
  12. java生成zipf分布_统计分布-Zipf分布
  13. 修改Linux系统最大TCP连接数限制
  14. 如何让OpenwrtX86和win7双系统共存在一块硬盘
  15. 电压监测器:线性稳压IC 台湾合泰LDO系列
  16. 阿里数据仓库架构与模型设计
  17. 8.4 向量应用(二)——空间直线
  18. 【C语言】通讯录——源代码
  19. Field brandService in cn.est.service.impl.HomeServiceImpl required a bean of type ‘cn.est.service.Br
  20. 数据迁移的高招!两台笔记本电脑怎么互传文件

热门文章

  1. nodejs mongodb
  2. 22考研全程时间计划安排表!
  3. 未来公园怎么能少了广场舞?
  4. python假分数约分,数学中假分数怎么约分
  5. 【无标题】vue elementPlus表格数据导出Excel
  6. doc转换成html接口,九云图文档转换接口在线word转pdf,pdf转html,doc转pdf等各种文档相互转换的接口...
  7. bugkuctf 游戏通关玄学式速通
  8. FPGA——PS/2驱动
  9. self :: 和 this- 的用法
  10. iOS-监听UITextView、UITextField键盘删除键