我正在使用Qt为Mac和Windows开发应用程序。我正在监视对文件夹X的更改。当文件从某处复制到文件夹X时,我会读取它的lastModified()日期。在Windows上,它显示原始文件的最后修改日期,这是预期的。但是,在Mac上它返回当前日期时间。当我重命名文件后,在将文件复制到文件夹X后,我在Windows和Mac上都获得了原始文件的上次修改日期。
那么为什么Mac上的Qt会在复制文件时返回当前的DateTime,并在重命名文件后返回原始文件的修改时间?
答案 0 :(得分:0)
日期时间戳不够可靠,无法实现文件夹监控系统,如上所述。
我花了几个月的时间在mac和windows上编写可靠的文件夹监控系统。结果证明每个都需要完全不同的策略。
在mac上:每个文件和文件夹都可以使用inode编号进行唯一标识(查看< sys / stat.h>),然后可以使用此编号来区分文件夹结构以确定更改。
on win:windows也有stat,但是这个数字不会持久,因此无法使用。我创建了一个使用ReadDirectoryChanges的解决方案,它是windows api的一部分。