2014-10-28 22 views
1

我不能讀取屬性文件使用Java.It意味着在這個屬性文件後退斜槓不工作。它顯示像這個目標:C:Usersxxx.a無法讀取屬性文件使用反斜槓

String filename="D://Desktop//xxx.properties"; 
is = new FileInputStream(filename); 
Properties prop=new Properties(); 
prop.load(is); 
System.out.println("destination :"+prop.getProperty("destination")); 

屬性文件是:

destination=C:\Users\xxx.a\ 

結果是顯示

destination :C:Usersxxx.a 

但我想告訴德stination:C:\ Usersxxx.a \

你能建議我嗎?

+0

你可以更改屬性文件嗎? – 2014-10-28 09:51:27

+0

不,我不能更改屬性文件.. – 2014-10-28 10:18:41

+0

你可以閱讀文件爲文本文件或閱讀接受的答案http://stackoverflow.com/questions/6233532/reading-java-properties-file-without-escaping-values – 2014-10-28 12:24:22

回答

1

\是轉義字符。

正斜槓/在Unix環境中用作路徑分隔符。
反斜槓\在Windows環境中用作路徑分隔符。
所以,您需要使用\\/作爲路徑分隔符。你不能直接在java中使用\。因爲它是一個轉義字符。

因此,您需要對屬性文件進行更改才能使程序正常工作。 在屬性文件中使用/\\作爲路徑分隔符。

在你的情況下,你想顯示爲C:\Users\xxx.a\
因此,使用C:\\Users\\xxx.a\\在你的屬性文件,以獲得輸出C:\Users\xxx.a\

+0

不,我不想添加雙斜槓,如果我添加它將顯示在結果爲C:\ Users \ xxx.a \。是否有任何其他方式編程? – 2014-10-28 10:42:44

0

您需要兩條斜線添加到您的屬性文件是這樣的: destination=C:\\Users\\xxx.a\\

另一種方式是交換屬性中的斜線文件: destination=C:/Users/xxx.a/

一個\是一個轉義字符,因此已移除。添加兩個斜槓可以避開第一個,所以只剩下一個。

+0

謝謝回覆...但我只需要添加C :\ Users \ xxx.a \如果我們添加雙斜槓它將工作... – 2014-10-28 10:08:38

+0

如果您將兩個斜槓添加到您的屬性文件,它將只顯示一個斜槓爲您的目的地。在屬性文件中只有一個斜線就會越過,所以什麼都不顯示。在屬性文件中有兩個斜槓意味着第一個被轉義,第二個將被使用,因此只有一個出現。 – 2014-10-28 10:11:46

+0

如果我們在屬性中添加2個斜槓,它將顯示在定義single.yeah itz罰款。但我不想在屬性文件中添加雙斜槓 – 2014-10-28 10:40:26

0

\字符在許多編程語言中用作「轉義字符」。它給文本中的下一個字符賦予了特殊的含義。例如,\n編碼特殊字符「新行」。使用\\而不是\。這向解析器指出你的意思是實際符號,而不是轉義字符。例如,你的屬性值將是:

destination=C:\\Users\\xxx.a\\ 
+0

我需要在屬性文件中只添加斜槓。如果我們添加雙斜槓..它正在工作.. – 2014-10-28 10:17:52

+0

@mdrazi \\被解釋爲您實際屬性中的單個反斜槓字符。你的最終屬性值只包含每個目錄之間的一個'\'。 – metacubed 2014-10-28 10:21:05

0

你可以把它保存在d:/Desktop/xxx.properties爲

destination=C:/Users/xxx.a/ 

,並用一個反斜槓顯示它

String fileName = prop.getProperty("destination"); 
System.out.println("destination: " + fileName); // shows: C:/Users/xxx.a/ 
System.out.println("destination: " + Paths.get(fileName)); // shows: C:\Users\xxx.a