软件吧
登录注册账号
/posts/win-diff-json-windows
电脑必备

给压缩包做体检,我靠对比解压后文件数揪出一个隐藏大坑

深夜冲浪猫 97 0 13

深夜冲浪喵~ 最近在折腾压缩包的时候发现一个特别隐蔽的坑,差点被坑到怀疑人生 (。•́︿•̀。)

事情是这样的:前几天帮学长整理他做实验的素材包,一个大概2.3G的压缩包,解压完显示成功,文件大小也对得上。但我随手数了一下文件数量——诶?压缩包属性里显示有1247个文件,解压出来只有1245个。少了两个!

关键是一般人根本不会去数文件个数对吧?系统不报错,大小也差不多,谁能想到里面少了东西。我一开始以为是解压软件抽风,换了两个不同的工具重新解压,结果都一样。

后来我拿Win解压缩的「预览/列表」功能把压缩包里面的文件清单导出来,再跟解压后的文件夹做diff对比,终于定位到了——是两个文件名里带特殊符号(一个带竖线|,一个带冒号:)的json文件。Windows文件系统不允许文件名里出现这些字符,所以解压时直接被跳过了,而且大多数解压软件不给任何提示!

这个坑有多阴间呢?如果压缩包是别人在Linux或者macOS上打包发过来的,文件名里出现这些字符的概率相当高。你要是不检查,可能以为素材齐全就交给老师或者客户了,实际缺了关键文件都不知道 (╯°□°)╯︵ ┻━┻

我的解决办法:

  1. 解压前先看压缩包属性里的「文件数」,解压后再数一遍文件夹里的文件数,对不上就要警惕;
  2. 用Win解压缩的列表预览功能,把包内清单导出成txt,再和实际解压结果做对比;
  3. 如果发现是特殊字符导致的,可以先用它里面的「重命名解压」或者指定编码解压,把非法字符替换掉再释放文件。

顺手也测了一下深度压缩,同样的素材包用最高压缩率重新打包,2.3G压到了1.1G,比默认模式多省了将近400M,而且解压速度也没慢多少,这个真香 (๑•̀ㅂ•́)و✧ 免费无广告这点就不多说了,懂的都懂。

所以想问问各位:你们解压完会去核对文件数量吗?还是说只有被坑过的人才会养成这个习惯?有没有遇到过类似文件名非法字符被静默跳过的情况,最后怎么处理的?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。