2013-10-09 58 views
2

我寫的FILEPATH參數到屬性文件中像下面..爪哇 - 寫文件的位置屬性文件

String newFilePath = txtFilepath.getText(); 
Properties prop = new Properties(); 
java.io.File propFile = new File("src/com/app/tool/properties/settings.properties"); 
prop.setProperty("FILEPATH", newFilePath); 
System.out.println("newFilePath "+newFilePath); 
    try { 
    prop.store(new FileOutputStream(propFile), "New File location"); 
    } catch (IOException ex) { 
    ex.printStackTrace(); 
    } 

的filepath是d:\ filelog.txt

雖然寫,控制檯打印像..

newFilePath D:\filelog.txt 

但是,當我打開屬性文件,內容就像。

FILEPATH=D\:\\filelog.txt. 

任何人都建議我,我真的在我這裏..

回答

0

檢查文檔只需調用prop.get("FILEPATH")。您會看到您收到「D:\ filelog.txt」,就像您放入。

+0

哦..!我發現了這個錯誤。我使用ResourceBundle從屬性文件中獲取字符串值。無論如何,謝謝你指出這一點。現在一切都很好。 – SanCJ

2

在屬性文件中,:有意義。

key = value 
key: value 

兩者都是有效的。因此,寫入屬性文件時必須轉義。即使\需要轉義。但是,當您在控制檯上顯示它們時,將識別出轉義,並且值正確顯示。

如果你看到Properties

store()方法的文檔在此屬性表中的每個條目被寫出來,每行一個。對於 ,每個條目都寫入了關鍵字符串,然後是一個ASCII =,然後是關聯元素字符串 。檢查鍵和元素 字符串的每個字符以查看它是否應呈現爲轉義 序列。 ASCII字符\,製表符,換頁符,換行符和回車符分別寫爲\,\ t,\ f \ n和\ r。 對於合適的十六進制值xxxx,小於\ u0020的字符和大於\ u007E的字符爲 寫爲\ uxxxx。對於 鍵,所有空格字符都用前面的\字符書寫。 對於元素,前導空格字符但未嵌入或末尾空格字符用前面的\字符書寫。 鍵和元素字符#,!,=和:用前面的反斜槓 寫入,以確保它們正確加載。

注: -如果你使用Properties讀取屬性文件它不應該是一個問題(它會處理逸出),但如果你讀屬性文件就像一個普通的文本文件(你應該永遠不要做,除非你不在意),那麼這將是一個問題。

+0

感謝您的信息。因此,這意味着將屬性文件中的文件位置保存並不是一種鼓勵行爲。或者您仍然可以保存屬性文件,並在訪問位置時將\:替換爲:並進一步處理。 – SanCJ

+0

他們可以。你剛剛救了他們。只要在屬性文件中,':'就會被轉義,但這對我們來說應該不是問題,只要使用'Properties'來讀寫'.properties'文件。 – SudoRahul