2008-09-11 131 views
16

我正在構建一個針對Windows,Mac和Linux的應用程序。我想知道應該在哪裏保存應用程序數據,如設置等。跨平臺應用程序應該在哪裏保存數據?

應用程序的安裝文件夾是最簡單的選擇,但我認爲這可能是新的Vista安全模型的問題。此外,用戶可能需要不同的設置。

C:\ Documents and Settings \ username \ MyApp是否適用於Vista和XP? /home/username/.MyApp適用於Linux和Mac嗎?

任何想法和/或最佳實踐的鏈接非常讚賞。

謝謝!

胡安

+0

Kristopher的回答在技術上是正確的,但是fwiw,Mac上的〜文件夾是/ Users not/Home – username 2008-09-11 16:22:47

回答

12

每個平臺都有自己的發現用戶的主文件夾或文件夾,或偏好文件夾API。

  • 的Windows:的SHGetFolderPath()或SHGetKnownFolderPath()
  • 的Mac OS X及iPhone OS:NSSearchPathForDirectoriesInDomains()
  • UNIX:$ HOME環境變量

不要硬編碼特定路徑或只需在用戶名上加上前綴和後綴即可。另外,請儘量遵循平臺命名文件的約定。

2

我不是:)

我在Mac/Linux的Windows和HOME中使用USERPROFILE。但即便如此,我也需要知道那些地方是正確的。

謝謝!

2

在Windows中,您需要進入另一個級別,而不僅僅是用戶配置文件。使用應用程序數據文件夾。

1

永遠不會將用戶數據存儲在應用程序文件夾中。這只是一個壞主意。

大多數操作系統都有一個$ HOME(或%HOME%)環境變量。那將是第一個看的地方。

但是,如果您想幹淨地支持多個操作系統,那麼您將不得不爲每個操作系統指定一些特定的操作系統代碼,以確切地確定事情需要去的地方。 (〜/ Library for Mac OS,〜/ .config用於基於GNOME的系統,%HOME%/ Windows的應用程序數據等)。

2

在Windows上我使用APPDATA,而在Linux上我使用HOME。

5

在問候的最佳實踐,傑夫張貼在污染用戶空間的文章,可能對您有用:Don't Pollute User Space

+0

非常不錯的鏈接,謝謝。有趣的是,我訂閱了Jeff的博客,我只是不記得那篇文章。再次感謝! – 2008-09-11 17:11:27

4

作爲一個普遍的觀點,我建議抽象的設置執行到「設置提供」併爲每個平臺提供不同的提供者。這樣,您可以以最適合目標平臺的方式(例如,Linux或Windows註冊表中的文件)實施設置的存儲。

不要簡單地採用'最低公分母'。如果您的內容必須明確存儲在文件中,請讓您的設置提供商公開這些文件的平臺特定位置。

1

你打算用什麼語言?例如,Java有專用的Preference API

相關問題