2015-04-21 36 views
0

我正在讀取具有包含單個或多個反斜槓的鍵和值的Java屬性文件。示例:讀取並比較包含鍵和值中的反斜槓的屬性文件

xyz\ \ \ \ val.action.do_something\= {show} {first} &nbsp; {last} </a> 

filepath=C:\folder1\folder2 

i\have\backslash=the\value 

i\\also\have\backslash=value 

我知道,properties.load從兩側刪除反斜槓。即使在比較來自兩個不同屬性文件的給定密鑰的值時,我如何在兩側保留它?

主要目的是比較2個這樣的屬性文件。比較時應逐字逐字比較,也應同樣打印。

+1

也許你應該舉一個你期望得到什麼樣結果的例子來改善問題。 – Rias

+0

爲什麼?反斜槓有一個特定的含義,如果你沒有爲它使用它們,那麼你可能會錯誤地使用'java.util.Properties.'來解決這個問題。如果您只想比較原始文件,請勿使用'Properties.' – EJP

+0

我正在比較屬性文件,而不是原始文件。這些文件確實是屬性文件。但是,屬性文件具有允許反斜槓和所有特殊字符的鍵和值中的任何順序的條目。 – naspras

回答

0

將反斜槓放入按鍵中是件奇怪的事,在我看來這是一個非常糟糕的主意。我不確定它是由屬性文件規範允許的。

總之,你需要逃避你的反斜線和其他特殊字符(如 '=' 或 ':' ...),所以

filepath=C:\folder1\folder2 

應該成爲

filepath=C\:\\folder1\\folder2 

看一看在java.util.Properties javadoc。

+0

謝謝!這是理解的。但是,我們假設這裏是這種情況。假設屬性文件A的條目爲* this.key =一行後跟新行\ n *,屬性文件B將其作爲* this.key =後面跟着一行新行*。比較時,它報告一個區別,但是處理「\ n」而不是顯示字符。比較或打印時如何保留字符? – naspras

+0

我不確定完全明白你想要什麼。如果你想在你的價值中有一個新的行字符,你也需要逃避它。例如'my.value =帶有新行的值\ n'。如果您想保留'\ n'序列,則需要轉義反斜槓:'my.value =轉義新行\\ n' –

+0

請參閱http://stackoverflow.com/questions/10285551/newline-char-在最java的屬性文件值 –