我設計了一個多線程應用程序,它將監視和處理選定文件夾中的文件(根據用戶偏好)。如何存儲文件夾/文件樹
在文件中存儲信息的最佳方式是什麼? (例如,用戶添加xxx目錄,我需要瀏覽目錄並將所有文件和子目錄添加到我的應用程序)
我正在考慮自己的樹結構或使用SQLite。
感謝
我設計了一個多線程應用程序,它將監視和處理選定文件夾中的文件(根據用戶偏好)。如何存儲文件夾/文件樹
在文件中存儲信息的最佳方式是什麼? (例如,用戶添加xxx目錄,我需要瀏覽目錄並將所有文件和子目錄添加到我的應用程序)
我正在考慮自己的樹結構或使用SQLite。
感謝
SQLite是一個很好的解決方案,因爲數據庫包裝將手柄鎖定的讀取和寫入(在數據庫中)爲您。甚至可以使用列作爲文件的讀/寫鎖。
我讀了有關於使用SQLite與多線程限制。我有另一種方式? – user653952 2011-03-18 09:16:08
@ user653952:兩個線程不能同時在同一個數據庫記錄上工作,但無論如何,這將會非常糟糕。你必須小心比賽條件等等,但是你必須留意這個 - 你聽說過什麼限制? – theheadofabroom 2011-03-18 10:31:39
這取決於你的環境,規模和項目類型等
最簡單的方法是使用鹹菜。
例如數據是在此格式的元組:
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()
然而,這將需要你自己處理醃製文件的鎖定和阻塞。這取決於您期望多個進程想要從同一個pickle文件讀取/寫入的頻率,以及您是否希望他們知道在讀取/寫入循環中部分發生的更改。 – theheadofabroom 2011-03-17 17:18:44
這取決於你的環境,規模和項目類型等 – Hossein 2011-03-17 17:02:31