2011-03-17 226 views
2

我設計了一個多線程應用程序,它將監視和處理選定文件夾中的文件(根據用戶偏好)。如何存儲文件夾/文件樹

在文件中存儲信息的最佳方式是什麼? (例如,用戶添加xxx目錄,我需要瀏覽目錄並將所有文件和子目錄添加到我的應用程序)

我正在考慮自己的樹結構或使用SQLite。

感謝

+0

這取決於你的環境,規模和項目類型等 – Hossein 2011-03-17 17:02:31

回答

2

SQLite是一個很好的解決方案,因爲數據庫包裝將手柄鎖定的讀取和寫入(在數據庫中)爲您。甚至可以使用列作爲文件的讀/寫鎖。

+0

我讀了有關於使用SQLite與多線程限制。我有另一種方式? – user653952 2011-03-18 09:16:08

+0

@ user653952:兩個線程不能同時在同一個數據庫記錄上工作,但無論如何,這將會非常糟糕。你必須小心比賽條件等等,但是你必須留意這個 - 你聽說過什麼限制? – theheadofabroom 2011-03-18 10:31:39

0

這取決於你的環境,規模和項目類型等

最簡單的方法是使用鹹菜

例如數據是在此格式的元組:

actions=(
    {time=..., user=..., action="adddir", name="new folder"}, 
    {time=..., user=..., action="accessfile", name="/etc/passwords"} 
) 

#save the data: 
f = open('somefile', 'w'); 
pickle.dump(actions, f) 
f.close() 

#laod them: 
f = open('somefile', 'r'); 
actions = pickle.load(f) 
f.close() 
+0

然而,這將需要你自己處理醃製文件的鎖定和阻塞。這取決於您期望多個進程想要從同一個pickle文件讀取/寫入的頻率,以及您是否希望他們知道在讀取/寫入循環中部分發生的更改。 – theheadofabroom 2011-03-17 17:18:44

相關問題