首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快照文件系统的体系结构解决方案

快照文件系统的体系结构解决方案
EN

Stack Overflow用户
提问于 2013-07-01 15:53:19
回答 1查看 128关注 0票数 0

请帮我想想一个问题。我有一个用C++/Qt编写的应用程序(让我们称之为X),它应该存储并定期更新用户系统上安装的所有应用程序的信息。在Linux上,根据.desktop推荐来解析所有FreeDesktop.org文件需要花费太多的时间--在我的计算机上大约2-3秒。因此,我决定使用缓存来处理文件。

缓存应该如何工作:

(请注意,app文件是包含用户系统上安装的应用程序的信息的文件。例如,在Linux上,它可能是.desktop文件,也可能是Windows-.lnk文件,等等)

  1. 首先,当应用程序文件位于用户系统上时,我们有一个目录列表(例如,在Linux上,该列表包括/usr/share/application目录)。
  2. X启动时,它会遍历列表中的所有文件夹,并创建所有文件的“快照”。快照应该是包含文件完整路径和last modified时间的记录列表。然后,X解析快照中的所有文件,并将必要的信息保存在appsInformation列表中。
  3. 经过一定时间后,X将创建该文件夹中文件的新快照。然后,将新快照与旧快照进行比较,并创建三个更改列表:added列表,包含新快照中存在但旧快照中不包含的所有应用程序文件;modified列表,包含所有更改了last modified时间的应用程序文件;deleted列表,包含旧快照中存在但新快照中不存在的所有应用程序文件。然后,从added列表中的新文件中解析信息,将其推回appsInformation列表,根据modified列表更改appsInformation列表中已有的记录,删除appsInformation列表中与deleted列表中的文件匹配的现有记录。

因此,我需要有两个文件系统快照,其中一个以某种方式连接到appsInformation列表。

下面是我的问题:,我应该使用什么方法和工具来最好地构造所有这个体系结构?在结果中,处理快照应该比解析所有文件至少快两倍。我考虑了一些想法,但它们确实是丑陋和难以释放的。我是否应该使用几个QList的对象,每个对象都包含一个文件信息和一个指向appsInformation记录的指针?还是有个更好的主意?谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-03 12:26:57

我一开始就不会使用投票。相反,我会使用一些基于回调的文件系统监视库。Windows和Linux都已经有了这一点,请参见以下问题的答案:

与这些库一起安装的回调通常不仅会被告知更改了哪个文件,而且还会得到有关更改的一些细节;例如,添加、删除或更改了一个文件。因此,根据“更改类型”,可以在appsInformationList中添加/删除/修改元素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17408645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档