跳至主要內容

压缩包编码问题

LincZero大约 2 分钟

压缩包编码问题

目录

解压缩操作

临时文件夹

Q:临时文件夹是干嘛用的?为什么需要先解压到临时文件夹再移动文件回来?

参考:https://www.zhihu.com/question/34200265

这其实只取决于解压软件的具体实现,并没有什么太多原理上的原因。

  • 当你把文件从压缩软件中「拖」出的时候,压缩软件并不知道被拖到了那里,只是接收了 Windows 发来的给定一个拷贝源的请求,所以必须要解压到某个地方,通常是临时文件夹,然后由 Windows 来完成移动到目标文件夹的工作。
  • 另外,有一些特殊情况也会解压到临时文件夹,比如你直接双击打开了压缩包中的文件运行的话,压缩软件依然要解压所有文件**(除了一些确保可以独立运行的后缀以外)**,这时候只能解压到临时文件夹。
  • 还有就是目标文件夹来源是一个可移动介质,比如 U 盘。 为了考虑到目标介质对于解压过程中动态的写入可能会连接不稳定以及闪存颗粒寿命等一系列因素,通常也会先解压到临时文件夹再拷贝进去。

Q:将文件夹中的一个文件打开/拖出来需要解压压缩包的所有内容吗?

A:某种情况下不需要

测试场景:拖拽的是可独立被执行的扩展名的文件(图片 视频 音乐等),使用的是zip默认的压缩方式

测试结果:可以看到将其中一个文件拖拽出来与整体解压的时间消耗完全不能对比

image-20220711150516621
image-20220711150516621

什么情况下需要?

猜测:(未经实测)

  • 运行.exe等不可单独被执行的文件
  • 压缩包A内压缩包B里的文件C,可能需要解压整个压缩包B
  • 其他压缩方式
    • 如其他格式后缀 (rar 7z等)
    • 或分卷压缩
    • 或带密码和其他混淆参数的压缩