我正在从慢的暴露数码相机的网络共享DCF 文件系统。我不需要所有的图像,只需要特定时间间隔内的图像。
调用stat
每个文件来获取其时间戳需要太长时间,因此我尝试提高效率。
DCF 文件系统将每 1,000 张照片拆分到一个单独的目录中。一个想法是按文件名编号对给定目录中的文件进行排序,例如,,,,DSC00590.JPG
然后检查第一个和最后一个文件的时间戳DSC00591.JPG
,DSC00592.JPG
看看整个目录是否超出了我的间隔。
但是,如果删除了一张照片,随后又拍摄了一张新照片,而新照片的编号与删除的照片相同,则此方法可能会失败。这将打破时间戳和文件名均单调递增的假设。
所以问题是:假设文件编号单调增加是否安全?我可以使用其他技巧来根据时间戳有效地对照片进行子集化吗?
答案1
DCF 规范建议分配比给定目录中的最大数字大 1 的数字。但是,这不是必需的。
此外,它建议在删除目录之前警告用户,因为这可能会造成不连续性。
未指定的是,如果您有两个目录(例如100
和101
),并且100
已满,并且您删除了中的最后一张照片100
,然后拍摄一张新照片,它会去哪里?
因此,不同相机的行为可能有所不同,因此不是可以安全地假设编号是单调递增的。我最好测试一下这个特定的系统来确定它的行为,但对于任意的 DCF 文件系统,都不能假设这种行为。
我没有找到比stat
所有文件更好的方法。