2014-01-21 53 views
0

我目前正在寫在Java中的外殼更換爲Windows,和我的應用程序正在創建一個使用配置文件的好位置? (用戶之間共享,每臺機器常見)

File userSettings = new File("Gyroscope.properties"); 

但是一個配置文件,如果這是由窗口中運行,當前目錄設置爲C:\windows\System32\,並且該程序對此目錄沒有寫入權限。

什麼是配置文件寫入更好的位置?最好將它與jar文件相關,但是我不知道這樣做的好方法,而其他堆棧溢出問題對此確切問題有不清楚的解決方案,所以我正在尋找其他位置作爲選項。

配置是特定於計算機的,對所有用戶都應該是通用的。

+1

如何對用戶的主目錄? –

+0

如果你希望它相對於罐子,你有沒有嘗試獲取當前的工作目錄從代碼,然後創建文件相對於該路徑? –

+0

是的,這是我如何碰到這個問題,首先,當前的導演一旦它作爲一個shell運行,y就會更改爲系統根目錄。 –

回答

1

使用Preferences類,它會確保將設置寫入允許的位置(如用戶的家目錄或註冊表)。

+0

使用Preferences類,配置​​選項到底在哪裏?我需要能夠記錄它的位置,但是這樣做的好處在於,它允許我選擇不依賴於用戶,將其存儲在用戶主目錄中不允許我執行。 –

+0

這取決於平臺。在Unix上,它會保存到〜/ .java_profile/ – Kayaman

1

我將介紹一種可能的解決方案。應該有幾種方法來實現它。

把你的配置文件放在你的jar旁邊。在調用java時,將配置文件顯式放入類路徑中(例如java -cp .../Gyroscope.jar;.../Gyroscope.properties <your_main_class>)。

現在你可以訪問你的屬性文件作爲資源(ClassLoader.getSystemResourceAsStream(「/ Gyroscope.properties」))。只要你想要的類加載器一旦方便,併爲你的實際實現cleam一旦你有一個輸入流,您可以將屬性加載到Properties對象如常。

希望這將有助於。

+0

這樣的幫助,但它會將問題轉移到適當的文檔中,以便如何正確設置類路徑以供人們遵循。 –

+0

事實上,您必須記錄和/或提供啓動器外殼腳本(.sh,.bat,...)。順便說一句,無論選擇何種解決方案,您都必須記錄它。 ;-) – Algiz

+0

我不介意使用shell腳本啓動它,但是它留下了一個命令提示符窗口,其中包含所有調試信息。 –

相關問題