精华内容
下载资源
问答
  • 对zip文件进行解压缩工具类,以及jar包
  • 从而最大程度地减少文件损坏的损失,datanumen rar repair可以解决大部分用户遇到的文件损坏无法解压怎么办以及压缩文件会损坏原文件吗的问题,大部分rar压缩文件损坏问题都将得到非常理想的解决,想知道rar文件损坏...
  •  在一台电脑把一个rar压缩文件复制到另一台电脑上,解压时出现“这个压缩文件格式未知或者数据已经被损坏”错误。 原因:  有可能是复制的不完全,压缩文件真的坏了,但也有可能是另一种情况,如在win10的系统中...

    出现情况:

                在一台电脑把一个rar压缩文件复制到另一台电脑上,解压时出现“这个压缩文件格式未知或者数据已经被损坏”错误。

    原因:

                有可能是复制的不完全,压缩文件真的坏了,但也有可能是另一种情况,如在win10的系统中把压缩文件复制到了win7的系统中,因为winrar版本差异太大导致无法解压,这时候只需要到网上下载WinRar最新版到本地,再解压,问题解决。

    展开全文
  • //生成压缩文件前先搜索客户地点下的所有药检文件 for (int i = 0; i < newList.size(); i++) { String new_store = (String) newList.get(i); System.out.println("第" + i &#...
  • 线上环境Linux,我使用tar命令打包了一份文件想发送到本地(Windows)。结果发现本地和线上这个文件都不...就是因为压缩添加了参数“z”,但同时指定了压缩文件后缀名zip,最终导致了上面的情况。 之后使用 tar -cv

    线上环境是Linux,我使用tar命令打包了一份文件想发送到本地(Windows)。结果发现本地和线上这个文件都不能成功解压出来。刚开始还以为时本地是Windows导致的,后来发现不是。
    原来是学艺不精。。。下面上命令:
    tar -zcvf test.zip test   这一步压缩文件之后,然后就出现了上述的问题。
    参考参数:
      -z或–gzip或–ungzip  通过gzip指令处理备份文件。
    就是因为压缩时添加了参数“z”,但同时指定了压缩文件后缀名zip,最终导致了上面的情况。
    之后使用 tar -cvf test.zip test,不管是Linux下解压还是Windows下解压都正常了。

    展开全文
  • 修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点。根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志、使用的哈夫曼树类型、以及3个哈夫曼树的树元素个数等。如果某个gzip文件...

    GZIP结构图:

    修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点。根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志、使用的哈夫曼树类型、以及3个哈夫曼树的树元素个数等。如果某个gzip文件中间有一个坏扇区,要找到坏扇区后的一个正常起点,仅需按位右移,一直移位到可以正常解压的某个位,就可能找到了正确的压缩包起始。而根据gzip文件的压缩作业窗口为32KB大小推算,这个遍历不会超过64KB即可找到。在内存中快速循环可以很快找到,但需要有明确的判断错误的方法。

     首先可以明确的是结尾标志,应该为0(我们是从损坏的点向后查)。而哈夫曼树类型也大致应该是动态哈夫曼(0x02),cl1的元素个数应该取值为257到286之间(包含边界),cl2的元素个数应小于等于30,ccl的元素个数取值可为1-15(包含边界)。

     其实,还可以参考的东西有,解开的哈夫曼树是否异常,或者通过规律性原则找到最后一个取值为256的值,但这些算法应该是较为麻烦的,有上面的算法连续校验几个压缩块就足够了。

     具体方法是对gzip的源码做修改,进行遍历。因时间关系,未做成通用工程,仅快速修改了部分代码。大致的修改点为:

    找到损坏点:

    在unzip.c中,

    error("invalid compressed data--format violated");

    这一行前,获取当前解码字节位置即可。

     

    二、遍历找到损坏点:

     1、inflate.c文件中,改

    if (nl > 286 || nd > 30)

    #endif

    return 1;

    为:

    if (nl > 286 || nd > 30||nl <257 || nd <1)

    #endif

    return 1;

    2、inflate.c文件中,在int inflate_block(e)函数中

    在如下代码前

    bb = b;
    bk = k;

    加入代码:

    if ((t != 2) || (*e != 0))
    return 2;

    3、inflate.c文件中,在int inflate_block(e)函数尾部

    把if (t == 0) 与if (t == 1)的情况都直接返回错误值2

    4、inflate.c文件中,函数int inflate()中,改

    if ((r = inflate_block(&e)) != 0) 
    return r;

    end

    为:

    unsigned t;              /* block type */
    register ulg b;           /* bit buffer */
    register unsigned k;  /* number of bits in bit buffer */
    while (inptr <= insize)
    {
          unsigned int tptr = inptr; 
          unsigned int tbk = bk; 
          unsigned long tbb = bb; 
          unsigned int twp = wp; 
          long long tstart = *(long long*)(inbuf + tptr);
           if ((r = inflate_block(&e)) != 0)
           {
                inptr = tptr;
                bb = tbb;
                   bk = tbk;
                   wp = twp;
                   b = bb;
                   k = bk;
                   NEEDBITS(1)
                   DUMPBITS(1)
           }
           else
            {
                 printf("get by www.datahf.net!"); //也可输出tstart,bb,bk 值,转载时请保留版权信息:www.datahf.net张宇
          }
    }

    此4步完成后,试着调试这个错误的.gz文件,当然,也可以在代码中解释完头部结构后加一个seek,直接seek到损坏位置

    通常情况下,输出printf(“get by www.datahf.net!”)这行代码时,已经找到了正确的起始位

    找到起始位后,也可以构造或拷贝一个正常的gzip文件头,再拼接好找到的位流,即可解压了。(如果位流不是字节对齐的,可能要全部做位移)。拼接后很多压缩文件就可以打开甚至于解压了,不过,有可能会报错,主要是尾部的校验和大小错,其实可以忽略。

    如果拼接好了linux下,不能直接用“gzip –d”解压,因其crc有错误,会导致解压到99%后报错,然后把文件删除,换成管道命令即可:

     

    展开全文
  • 2019年广联达文件损坏找回办法,由于别人用的盗版软件导致工程锁定,可以用这个办法来找回自己的工程
  • 压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 ... * @throws ZipException 压缩文件损坏或者压缩失败抛出 */ 方法详细见文件! 一个简单的demo 欢迎大家指点,一起提升
  • bzip2recover命令用来修复损坏的.bz2文件 , bzip2是以区块的方式来压缩文件,每个区块视为独立的单位。因此,当某一区块损坏时,便可利用bzip2recover,试着将文件中的区块隔开来,以便压缩正常的区块。通常只...
  • 最近项目里需要做一个功能,就是吧多张图片压缩一个压缩文件,我使用的是java的ZipOutputStream 来实现的。最后开发完了,测试发现解压后的图片文件只有第一张能打开,后面的几张图片都打不开。 代码如下: ...

    最近项目里需要做一个功能,就是吧多张图片压缩一个压缩文件,我使用的是java的ZipOutputStream 来实现的。最后开发完了,测试发现解压后的图片文件只有第一张能打开,后面的几张图片都打不开。

    代码如下:

    ZipOutputStream out = null;

    BufferedOutputStream bo = null;

    try{

    out = new ZipOutputStream(new FileOutputStream(zipUrl));

    bo = new BufferedOutputStream(out);

    file = new File(fileUrl);

    for(File tpfile:file.listFiles){

    if(f.exits()){

    String encodeHtml=encodeHtml(tpfile.getName());

    out.putNextEntry(new ZipEntry(encodeHtml));

    FileInputStream in = new FileInputStream(tpfile);

    BufferedInputStream bi = new BufferedInputStream(in);

    int b;

    while((b=bi.read())!= -1){
    bo.write(b);

    }

    bi.close();

    in.close();

    }

    }catch(IOException e){

    略..

    }

    bo.close();

    out.close();

    }

    原因分析:

    这里面比较重要的一行是

    out.putNextEntry(new ZipEntry(encodeHtml));

    这句的意思是压缩文件里面的一个文件开始的标志。所以出现这句时,证明开始压缩一个新的文件了,但是在开始新的文件压缩之前,发现bo.write(b) 后并没有bo.flush(),导致上一张图片还有数据在缓冲区没有被写到文件中去,所以进一步导致这部分还在缓冲区的数据被写到新的图片文件中,而且还是写在开头,所以直接导致后面的文件都无法打开。(注:BufferedOutputStream的buffer为8k,当buffer装满8k数据后就会写到磁盘文件中,如果不足8k,则不会写到磁盘文件中,此时只有使用flush方法才能让buffer的数据写到磁盘文件。)

    所以解决的方法就是在bi.close();前加上bo.flush();即可

    展开全文
  • 解压文件时不选择“一键解压” 而选择 “解压到” 选项 打开“高级选项” 选择“ 保留损伤文件”选项即可 这样解压出来的文件文件会保留下来,但是文件可能会播放到某一段出现问题,播放不了,但是能看...
  • 如果在下载过程中遇到文件下载非常慢,几K几K的下,那肯定是网络有问题,换一个网络,比如开一个热点; 转载于:https://www.cnblogs.com/canyeweiwei/p/10582502.html...
  • c#打包文件解压缩

    2015-12-11 15:24:20
    c#打包文件解压缩,很实用的,自己在项目中用到。提供给大家进行参考,共同学习。
  • java压缩+解压GZ(Linux)文件.rar

    热门讨论 2012-03-22 22:58:01
    java压缩+解压GZ(Linux)文件.rar
  • 已知修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点。根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志、使用的哈夫曼树类型、以及3个哈夫曼树的树元素个数等。如果某个gzip...
  • come on 伸出中指戳戳上方关注我……Linux 系统压缩和解压 zip 格式文件前面我们说了在 Linux 系统上...".zip"格式压缩文件,使用 .tar 格式压缩解压的文件很少使用,这时候我们还要把下载或者已经压缩好的 "zip" 格...
  • 在上一篇中已知,修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点。根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志、使用的哈夫曼树类型、以及3个哈夫曼树的树元素个数等。...
  • 压缩文件解压密码破解之fcrackzip

    万次阅读 2021-02-07 11:06:16
    工具简介:fcrackzip是一款专门破解zip类型压缩文件密码的工具,工具“短小精悍”。 使用范围:Linux、Mac osx 关于安装: 1、Mac OS brew install fcrackzip 2、Ubuntu apt-get install fcrackzip 3、...
  • 问题如下:压缩文件正常有8.5M,15个文件,但360压缩打开只有一个空文件。 解决办法:如果,压缩文件右键→打开方式→Windows资源管理器,就可以打开了。
  • ![!... ![!... public static string ZipFiles(string[] sourceFileList, string saveFullPath) ... using (ZipFile zip = new ZipFile(saveFullPath, Encoding.UTF8)) ... string fileName = fileToZip.Substring(fileToZip....
  • * @throws ZipException 压缩文件损坏或者压缩失败抛出 */ public static File [] unzip(String zip, String dest, String passwd) throws ZipException { File zipFile = new File(zip); return unzip...
  • 文件解压提示损坏了,文件我压缩的时候带着密码,我想请问下能不能忽略所有错误提示,把文件解压出来
  • 今天正常的导压缩文件,发现一个问题,当数量据大点,比如我的表有25万个字,就提示解压失败 后来我慢慢排查,我放删除临时文件的代码注释掉,让程序生成临时文件。 发现,临时文件只有65kb,且是可以...
  • 使用Java生成的ZIP压缩包解压时出现不可预料的压缩文件末端的解决方案   问题描述: 如下图所示,在解压Java程序生成的ZIP压缩包出现不可预料的压缩文件末端,   问题分袖: 出现上面的情况,大概有两种...
  • java zip文件压缩解压缩,支持中文 使用apache的工具包可设置字符编码
  • 后来看文章说,7zip压缩算法,如果文件出现一点错误,很难恢复。这么一说,吾决定以后统一使用zip格式。  在LINUX上,默认的就是zip/tar,都是zip格式。  压缩软件使用winZip?winRAR?待吾看看。 ...
  • java实现文件压缩解压缩通用方法 压缩解压缩有时候会用到,特地记录压缩解压的通用方法,方便日后使用。 一:导包 <!--文件压缩解压--> <dependency> <groupId>net.lingala</...
  • 解压RAR文件是提示,不可预料的压缩文件末端 如图 我们可以使用工具来修复 链接:http://pan.baidu.com/s/1cD8Mqq 密码:24dm 操作很简单,点击右侧按钮选择需要修复的压缩包, 然后点击开始修复,修复完毕后...
  • 办法一:WinRAR本身就带有压缩包修复功能。点击菜单“工具”下的“修复压缩文件”...办法二: 打开压缩包(不是解压,而是用WinRAR打开),选中你要压缩的文件,单击鼠标右键,在弹出的菜单里选择“无需确认直接
  • 接修复损坏的gzip压缩文件之原理篇,再次引用GZIP结构图: 已知修复一个损坏的gzip文件的关键环节在于找到下一个正常压缩包的起始点。根据结构图中的信息可知,每个压缩包的开始结构中有是否到达尾部标志、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,300
精华内容 6,920
关键字:

压缩文件解压时显示文件损坏