我應該在哪裏保存與我的應用程序相關的數據?我應該在哪裏保存配置文件?我應該在哪裏保存臨時文件?我應該在「文檔」中進行嗎? 「應用程序數據」?等...作爲開發人員,我應該如何使用Windows Vista(和Windows 7)中的特殊文件夾?
什麼是保存數據到磁盤的最佳做法(我猜,特殊文件夾的最佳做法?!)?
我應該在哪裏保存與我的應用程序相關的數據?我應該在哪裏保存配置文件?我應該在哪裏保存臨時文件?我應該在「文檔」中進行嗎? 「應用程序數據」?等...作爲開發人員,我應該如何使用Windows Vista(和Windows 7)中的特殊文件夾?
什麼是保存數據到磁盤的最佳做法(我猜,特殊文件夾的最佳做法?!)?
ApplicationData:您的應用程序需要的每個用戶的數據並且不屬於其他類別。標準配置文件會在這裏。
CommonApplicationData:所有不是「每個用戶」的數據。
LocalApplicationData:數據是每個用戶和非漫遊。例如,你想確保它只存儲在這臺機器上的所有東西(比如機器激活碼,通常也是緩存/臨時數據)。標準的臨時文件會放在這裏。
MyDocuments:用戶實際上將識別爲「可識別單個文檔」的用戶數據。
如果您不關心文件名,還可以使用臨時文件API在temp
目錄中生成一個臨時文件。您不應該手動執行此操作。例如,在.NET中,您可以使用Path.GetTempFileName()
作爲此目的。
AppData應該是自動配置和配置文件,文件只應該是用戶保存的文件。我會在AppData/Roaming和AppData/Local或LocalLow中的任何其他內容(特定於計算機)中放置可用於多個系統的任何內容。對於臨時文件,請使用Temp目錄。
我同意。當我在(My)文檔中安裝make目錄和/或存儲文件時,我討厭它。 – 2009-10-12 18:22:22
你可以根據Environment.SpecialFolder枚舉來翻譯你的答案嗎? Environment.GetFolderPath(Environment.SpecialFolder.xxx) – Nestor 2009-10-12 18:28:02
一般來說,Windows最佳實踐是遵循適當的環境變量。您想要保留的配置數據應該在%APPDATA%中,臨時文件應該在%TEMP%中。
這具有如果Windows改變東西並且尊重人們可能具有的奇怪配置不會破壞的優點。
此外,我同意其他答案,即「文檔」應該只用於用戶創建的數據,並且僅在提示後。
從Windows 7 Client Software Logo Program:
此外,您應該使用SHGetFolderPath或SHGetKnownFolderPath(在Vista +)獲取路徑。這將爲您提供當前系統的正確位置,而不管當前安裝的版本或語言如何。從不硬編碼您正在使用的任何路徑。
+1有用的答案,特別是關於「每個用戶」的區別。但是,我不清楚那些粗體字是什麼...文件夾的字面名稱?沒有...圖書館? .NET用來引用文件夾的某種抽象? – LarsH 2012-08-31 15:34:50
@LarsH:「但我不清楚粗體名稱是什麼......」它們是.Net Environment.SpecialFolder枚舉常量 - 請嘗試單擊它們。 :-) – RenniePet 2013-09-16 02:40:55
@RenniePet:kthx。 :-) – LarsH 2013-09-16 13:08:02