2010-07-18 61 views
1

我正在寫一個Java應用程序。目前,這會在.jar文件所在的同一目錄中生成一個名爲「trace.txt」的文件。這有時會導致文件權限問題,例如寫入C:\ Program Files \ Foo \ trace.txt。如何以獨立於平臺的方式爲Java應用程序選擇日誌文件的位置?

上了一些研究之後如此看來,一般的看法是,以登錄到應用數據\富\給定用戶。這不會是其他操作系統的相同位置。

這種情況下的最佳做法是什麼?我正在使用java.util.logging。

+0

該應用程序用於桌面。 – CodeBuddy 2010-07-18 11:47:45

回答

3

你總是可以使用USER_HOME,由〜在Linux中識別或

System.getProperty( 「的user.home」);在Java中。

你會看到很多應用程序都擁有自己的.myappname文件夾,並把配置文件,日誌在那裏。

這將映射在Linux或C /home/user/.myapp:在Windows /的Documents and Settings /用戶/ .myapp,並始終應爲可寫的。

+1

*「... USER_HOME,在Linux中由〜標識」* - 這是錯誤的! 1)它是理解「〜」的shell(例如bash),而不是Linux。 shell不是Linux專用的 - 它也運行在Bsd,Cygwin,classif UNIX等等上。2)實際上,「〜」只是擴展爲「HOME」環境變量的值,並且該環境變量可用於更多的背景比「〜」的作品。 – 2010-07-18 14:53:03

+0

這是一個相當肛門評論是公平的。這只是一個簡單的例子,而不是一個具體的定義。我知道Linux只是一個內核,而不是運行在它之上的軟件,而bash只是許多潛在shell中的一個。我會小心挑選無意義的漏洞 - 你聽起來像是給尼克斯愛好者一個壞名字的人之一。 – lucas1000001 2010-07-18 15:29:47

0

如果你的Java程序要求「安裝」(很可能只是設置一些配置文件,將您的二進制到某一個地方等),那麼它是完全正常的安裝過程中處理權限的東西(在什麼都平臺)或其他平臺特定的東西用於任何日誌文件,配置,緩存用戶設置等。安裝通常意味着用戶必須以超級用戶權限運行安裝腳本/程序。所以,你可以這樣做。

一般來說,如果你的應用程序存儲用戶特定的數據您可以將其存儲到/ home //。在Linux系統中,例如Window 7中的Users \ ttchong \ AppData(我在Window中不是很熟悉,如果我錯了,請糾正我)。而且您的代碼還需要處理用戶路徑,以允許多個用戶對您的程序進行不同的設置。

否則,如果它是像日誌文件那樣的程序信息,您不介意將它們轉儲到一起,我仍然更喜歡現在這樣做的方式,將它與您的jar文件相同的目錄存儲或在日誌中更好一點文件夾通過使用「安裝」技巧在同一目錄中。

1

如果這是一個「真實」的日誌或跟蹤文件,我將它寫入默認臨時文件路徑您可以通過java.io.tmpdir系統屬性得到。

相關問題