如何监控和同步文件集合?

时间:2011-07-19 23:19:39

标签: c++ sqlite synchronization

您好我正在尝试为我的应用程序创建一个简单的音乐库,该库使用sqlite存储有关文件的信息。我想知道当组成库的文件发生变化时如何更新我的数据库。

  • 我想弄清楚是否需要更新数据库的一种方法是计算构成库的文件数量与数据库中的文件数量。如果有成千上万的文件,这种方法似乎需要花费很多时间。有更好的方法吗?

  • 如何“更新”我的数据库而不实际再次浏览每个文件,获取艺术家,专辑等文件信息,并将其与我的数据库进行比较,以查看是否需要添加或删除文件来自数据库?

1 个答案:

答案 0 :(得分:0)

您可以使用多种技巧。

  1. 扫描用户添加的所有目录,以查看上次修改的时间戳是否已更改。如果它已重新扫描该文件。如果您愿意,可以在低优先级的单独线程中运行它。
  2. 当用户点击UI中的音轨重新扫描文件时。如果它不存在则提醒用户并删除该条目。如果确实存在,请检查时间戳并相应更新。
  3. 为用户提供重新扫描整个库的选项。
  4. 如果已知包含歌曲的文件夹的时间戳发生变化,您可以将其与任何子文件夹一起重新扫描,并相应地更新库。
  5. 如果文件仍然存在,则可能不需要将其从数据库中删除。
  6. 检查文件的时间戳(包括创建和修改)通常可以让您了解需要对数据库进行哪些更新(如果有的话)。

    您还可以提醒用户可能的更改,并根据检测到的更改类型询问他们是否要重新扫描。遍历子目录并处理几千个文件可能不会花费你想象的那么多时间。

    重新扫描文件时,您不需要将其与数据库中的现有记录进行比较。只需执行SQL UPDATE即可完成。如果您还不熟悉SQL,我建议您研究并试验网络上可用的一些示例语句。请记住,如果为每个扫描的文件执行单个SQL事务,则需要相当长的时间。