C++ 如何监视和同步文件集合?

C++ 如何监视和同步文件集合?,c++,sqlite,synchronization,C++,Sqlite,Synchronization,嗨,我正在尝试为我的应用程序创建一个简单的音乐库,它使用sqlite来存储有关文件的信息。我想知道当组成库的文件发生变化时,如何更新我的数据库 我想知道是否需要更新数据库的一种方法是计算组成库的文件数与数据库中的文件数。但是,如果有数千个文件,这种方法似乎需要很多时间。有更好的方法吗 我如何“更新”我的数据库,而不需要实际再次检查每个文件,获取文件信息,如艺术家、相册等,并将其与我的数据库进行比较,以查看是否需要从数据库中添加或删除该文件 您可以使用几种技术 扫描用户添加的所有目录,查看上次修

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

  • 我想知道是否需要更新数据库的一种方法是计算组成库的文件数与数据库中的文件数。但是,如果有数千个文件,这种方法似乎需要很多时间。有更好的方法吗

  • 我如何“更新”我的数据库,而不需要实际再次检查每个文件,获取文件信息,如艺术家、相册等,并将其与我的数据库进行比较,以查看是否需要从数据库中添加或删除该文件


    • 您可以使用几种技术

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

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


      重新扫描文件时,实际上不需要将其与数据库中的现有记录进行比较。只需执行一个SQL更新并完成它。如果您还不熟悉SQL,我建议您学习并试用网络上的一些示例语句。请记住,如果对每个扫描的文件执行一个SQL事务,则需要花费相当长的时间。

      嘿,谢谢您的回复。1.如果有人有一个音乐库文件夹,其中有他们所有的音乐,只有顶级文件夹在添加/删除文件时更改其“修改”时间戳。因此,我知道何时更新我的数据库,但我仍然需要扫描所有内容,并区分我需要在数据库中更改的内容。2.这看起来更像是一个程序错误,而不是一个功能=p3。我已经这样做了,但我想知道我是否可以轻松地自动化这个过程。SQL更新只是更改给定记录的数据。我不知道如何有效地添加/删除记录。您应该编辑原始问题并添加其他想法。这将允许我和其他人完善我们的回答,直到找到一套合适的解决方案。