我在那里的每一项都有一个文件路径和最后一次修改数据库字段中:最有效的方式来更新平面文件列表
1284581625555 C:\docs\text1.txt
1284581646992 C:\docs\text2.txt
1284581654886 C:\docs\text3.txt
1284581662927 C:\docs\subfolder\text4.txt
1284581671986 C:\docs\subfolder\text5.txt
...
每个条目也有文件内容的总结,和条目是通过递归地走下某个文件夹(在本例中为C:\ docs)并添加所有访问的文件而创建的。现在,我想对数据库进行更新,即
- 添加新创建的文件
- 删除删除的文件
- 更新修改的文件
很显然,我必须再次走在根文件夹看看有什么变化。但是,最有效的方法是什么?
有我能想到的两种方法:
- 首先遍历数据库,删除所有已删除的条目,并更新所有修改的条目。为此,每次必须从存储的路径字符串中创建一个文件对象,并调用file.exists()或file.isModified()。然后递归地遍历根文件夹并添加不在数据库中的文件。
- 首先走下文件树,记住列表中已添加/删除/修改的内容---这需要存储文件树以前状态的完整快照。然后遍历数据库并根据先前创建的列表添加/删除/修改条目。
哪种方法更好?还有其他吗?
编辑:创建摘要是非常昂贵的(全文摘录),遍历数据库也有点昂贵,因为它是基于文件的。