【问题标题】:Qt QFileInfo.lastModified() Mac OSX bug?Qt QFileInfo.lastModified() Mac OSX 错误?
【发布时间】:2012-03-06 07:29:44
【问题描述】:

我正在使用 Qt 开发适用于 Mac 和 Windows 的应用程序。我正在监视文件夹 X 的更改。当文件从某处复制到文件夹 X 时,我读取了它的 lastModified() 日期。在 Windows 上,它显示原始文件的文件的最后修改日期,这是预期的。但是,在 Mac 上,它返回当前日期时间。当我重命名文件时,将其复制到文件夹 X 后,我会在 Windows 和 Mac 上获得原始文件的最后修改日期。

那么为什么 Mac 上的 Qt 在复制文件时返回当前的 DateTime,而在我重命名文件后返回原始文件的修改时间?

【问题讨论】:

  • 好的,在 Windows 和 Mac 上进行更多测试时,我观察到以下情况:当文件被复制到正在监视的文件夹中时,只会发出一个信号,即当文件被创建的。当操作系统完成写入文件时,不会发出任何信号。有解决办法吗?

标签: macos qt


【解决方案1】:

正如您在上面所暗示的那样,日期时间戳不足以实现文件夹监控系统。

我花了几个月的时间在 mac 和 windows 上编写了一个可靠的文件夹监控系统。事实证明,每一个都需要完全不同的策略。

在 mac 上:每个文件和文件夹都可以用一个 inode 编号唯一标识(查看 ),然后该编号可以用于区分文件夹结构以确定更改。

on win:windows 也有 stat,但是这个数字不会持续存在,因此不能使用。我创建了一个使用 ReadDirectoryChanges 的解决方案,它是 windows api 的一部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多