【问题标题】:How do I know that content of a USB drive is changed or not我如何知道 USB 驱动器的内容是否已更改
【发布时间】:2011-08-28 23:38:27
【问题描述】:

我正在编写一个嵌入式系统多媒体应用程序,其中支持从 USB 驱动器播放。通常,当插入 USB 驱动器时,应用程序会解析整个 USB 驱动器以列出驱动器中存在的所有歌曲和视频。该列表存储在数据库中。如果稍后连接相同的驱动器,应用程序将使用数据库中的列表。

使用 USB 设备描述符中的序列号来识别驱动器。但问题是如何检测添加了任何新内容或删除了任何现有内容? 目前我的目标是仅支持 FAT32 格式的 USB 驱动器。

有什么方法可以检测到驱动器内容的变化吗?比如上次访问的时间戳或上次修改的集群?

【问题讨论】:

  • 由于序列号并不总是存在,您可以考虑始终重新加载设备的内容。然后,更改的内容不是问题。我怀疑您无论如何都必须通读 FAT/目录。
  • 但如果媒体中存在巨大的文件夹结构,重新加载内容可能需要很长时间。这就是为什么我一直在寻找任何机制来检测媒体的任何变化
  • 您可以在缓存数据库中保留文件名和时间戳列表。您只需要重新加载更改的内容。在设备上解析目录会比较快,除非是极端情况。

标签: usb fat32


【解决方案1】:

如果您可以访问原始块设备,则可以缓存FS information sector 的相关部分。空闲集群的数量或最近分配的集群更改的数量会告诉您某些东西发生了变化,尽管您必须手动追踪是什么。目录表中最后修改的条目可能对此有用,但我认为它不一定可靠 - 这取决于写入设备的严格程度。

【讨论】:

    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多