2012-02-21 201 views
6
logpath = LoggerUtils.getProperties().getProperty("log.path"); 
System.out.println("logpath: " + logpath); 

上面的代碼返回:Java屬性,獲取文件路徑

logpath: C:UsersMauriceDesktopLogs 

在屬性文件是:

log.path C:\Users\Maurice\Desktop\Logs 

如何保留文件分隔符?我希望這可以在Linux上工作,而不僅僅是Windows。

回答

14

其實,你需要把這個屬性文件中的:

log.path C:\\Users\\Maurice\\Desktop\\Logs 

看到這個:

更精確的load方法:

稍微向下滾動,你會看到這其中包括:

非有效的轉義字符作爲之前不把一個反斜槓字符\的方法,錯誤;反斜槓被無聲地丟棄。例如,在Java字符串中,序列「\ z」會導致編譯時錯誤。相反,這種方法默默地放棄了反斜槓。因此,此方法將兩個字符序列「\ b」視爲等同於單個字符「b」。

反斜槓\是一個轉義字符,否則會自動丟棄。

+0

謝謝。它是否也需要爲Linux逃脫? – Maurice 2012-02-21 02:33:07

+0

是的,但我會建議使用常規斜線('/')所有的時間 - 這也可以在Windows上運行:'log.path C:/ Users/Maurice/Desktop/Logs' – 2012-02-21 02:34:56

+0

阿好吧它的工作,謝謝很多。 – Maurice 2012-02-21 02:44:18

4

屬性文件,你需要或者使用正斜槓:

C:/Users/Maurice/Desktop/Logs 

或者逃跑反斜槓:

C:\\Users\\Maurice\\Desktop\\Logs 
2

Java的properties file format決定了反斜槓字符( 「\」)逃逸跟隨它的字符,所以要得到一個文字窗口路徑,你必須有:

logpath: C:\\Users\\Maurice\\Desktop\\Logs 

然而,Java將轉換路徑分隔符爲你自動以適應運行平臺,這樣你就可以一直使用着避免這種滋擾斜線:

logpath: C:/Users/Maurice/Desktop/Logs 
0

可以存儲Properties到文件第一,然後再次加載使用。 Properties將照顧逃脫/ unescaping任何東西。