原作:2021-09-29 23:02:26
更新:2023-03-08 15:46
问题
- 解压压缩包时,文件夹的修改时间变为当前时间。这主要发生在非空文件夹上,空文件夹和文件的修改时间正常。
- 虽然该时间一般不影响文件内容,但会隐含下列问题:
– 不能按原样恢复压缩前的状态
– 失去修改时间中可能包含的有用信息
– 失去使用修改时间排序文件夹的这个维度
– 强迫症看了不舒服
原因
解压时,文件夹先被创建,然后其中的文件才能被创建。而文件被创建时会改变其所在文件夹的修改时间,因此非空文件夹的修改时间变为其中最后一个文件被创建的时间,看起来接近当前时间。
解决办法
应使用合格的压缩软件,并采用合格的压缩文件格式,这样能够在一个文件夹的内容被全部创建完毕后,恢复该文件夹的修改时间。但前提是,压缩文件内必须已储存了压缩前的修改时间。
软件评测
这里列出几个支持此功能的压缩软件。其他软件待将来评测后添加。
压缩软件 | 版本 | 格式 | 压缩时能否保存时间 | 解压时能否恢复时间 | 备注 |
---|---|---|---|---|---|
7z | 2107 | .zip | 是 | 是 | |
7z | 2107 | .7z | 是 | 是 | |
Bandizip | 6.29 | .zip | 是* | 是 | |
Bandizip | 6.29 | .7z | 是* | 是 | |
2345好压 | V6.3 Build 11098 | .zip | 是 | 是 | 流氓软件 |
2345好压 | V6.3 Build 11098 | .7z | 是 | 是 | 流氓软件 |
WinRAR | .rar | 未测试 | 未测试 | 不推荐,见后文 |
* 该项功能需要对压缩软件进行手动配置才支持,因其默认是关闭的。如何配置见下文。
软件配置
Bandizip
- 设置 > 压缩设置 > 只压缩单个文件夹时不要创建根文件夹,取消勾选(此项非常重要)
- 设置 > 压缩设置 > 创建 Zip 文件时保存 NTFS 时间戳信息,保持勾选
注意事项
- 怎样测试一个压缩文件是否储存了压缩前的修改时间?在压缩软件中打开该压缩文件,并设置文件浏览控件的表头,使其显示出修改时间一列。如果看到正确(一般为不同于压缩文件的修改时间)的修改时间,说明压缩文件内已经储存了修改时间。
- 对于 7z,在解压进行的过程中,文件夹的修改时间是当前时间。这不要紧,等解压完毕后,7z 会自动把修改时间恢复为正确的修改时间。(如果不行,用 7z 重新解压到相同位置并全部替换,则可恢复为正确的修改时间。但这种情况一般不会发生。)对上述其他压缩软件,应该也类似。
压缩文件格式
这里简要介绍一下压缩格式的选择,仅供参考。
格式 | 压缩文件大小 | 压缩速度 | 兼容性 | 许可证 | 推荐 |
---|---|---|---|---|---|
.zip | 大 | 快 | 好 | 推荐 | |
.7z | 小 | 慢 | 中 | 7-Zip License | 推荐 |
.rar | 小 | 慢 | 差 | 商业使用涉及版权问题 | 不推荐 |