2012-02-07 185 views
1

我有一個Java的一段代碼,寫一些內容(地址),用戶屬性文件:反斜槓問題

address_string = "http://"+address.getText()+":"+port.getText(); 

properties.setProperty("url", address_string); 

prop.store(new FileOutputStream("user.properties"), ""); 

當我去檢查user.properties然而,除了得到一個正常的HTTP地址我有以下幾點:

http\://localhost\:9000/softwarearchive/ 

在結腸由反斜槓

我怎樣才能解決這個問題呢?

+2

當你讀到java中的屬性是反斜槓嗎?我的猜測是':'字符是.properties文件中的一個特殊字符,因此在寫入文件時它會自動轉義它們。從文件中讀取時應該避開它們,所以你應該沒問題。 – Herms 2012-02-07 18:18:32

回答

3

沒問題。使用load(InputStream)再次讀取您的屬性。然後從Properties正常得到url

3

「:」在屬性文件中用於將鍵與值分開。因此,文本中的任何「:」都需要轉義。

5

屬性文件具有特定的結構。請參閱:http://en.wikipedia.org/wiki/.properties

冒號是屬性文件中特殊的元字符。如果你想存儲一個鍵/值對,其中的值有冒號,爲了避免混淆,它應該被轉義。 Java的屬性寫作庫正在爲你逃避。

如果你使用properties.getProperty(),你會得到你期望的字符串嗎?如果是這樣,事情就好了。

3

檢出properties javadoc,這是正確的行爲。無論如何,它在加載時都會失敗,所以不要擔心你的原始數據。