好久以前,我注意到文件的创建时间很容易修改掉,比如复制文件,还有把文件从一个设备剪贴到另一个设备。
但是文件创建时间有时会有特殊意义,例如暗示着图片拍摄时间,所以我想有一段代码,可以维护文件创建时间不变。或者,可以根据一定的参照修改文件创建时间。比如,我可以对视频进行压缩方便存储,但是将原视频的创建时间和修改时间复制给压缩后的视频,从而实现“替换”。
不过今天我发现,Linux 系统下的“创建时间”并非 Windows 系统轻易可以获取和修改,至少并非一开始就是这样。
在 Python 标准库获得的 os.stat_result [1] 中, st_ctime 在 Linux 下为元数据修改的时间,在 Windows 下为文件创建时间。
File creation times 这篇文章有关于文件创建时间的讨论,其实这让我意识到,文件创建时间这一概念并不是多平台统一,也并非是一个普通的适合随意修改的属性。
这让我思考了一下我的需求,其实我想保留文件创建时间作为文件内容的新旧程度,其实这个更应该使用文件修改时间。即使我想压缩视频并不改变文件时间,也应该放弃维护文件创建时间的不变性(因为不同文件系统下对于创建时间的概念可能都不统一),转而维护文件修改时间的不变性!这个思路是与很多工具相吻合的!(之前看到 TinyPNG API 中有保留文件修改时间的选项)