我在那裏的每一項都有一個文件路徑和最後一次修改數據庫字段中:最有效的方式來更新平面文件列表
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()。然後遞歸地遍歷根文件夾並添加不在數據庫中的文件。
- 首先走下文件樹,記住列表中已添加/刪除/修改的內容---這需要存儲文件樹以前狀態的完整快照。然後遍歷數據庫並根據先前創建的列表添加/刪除/修改條目。
哪種方法更好?還有其他嗎?
編輯:創建摘要是非常昂貴的(全文摘錄),遍歷數據庫也有點昂貴,因爲它是基於文件的。