2016-10-03 56 views
0

我已閱讀並嘗試以下如何從屬性值刪除反斜槓Java中

和許多博客很好,但都是去除from string not for properties文件

I我試圖刪除屬性文件中值\,但沒有運氣

這裏是我的config.properties文件

query=select * from users 
field=id 

和我的Java代碼,A.java

import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.Properties; 

public class A { 

    public static void main(String[] args) throws IOException { 
     String configPath = "/home/arif/util-test/config.properties"; 
     Properties prop = new Properties(); 
     FileInputStream configFileInputStream = new FileInputStream(configPath); 
     prop.load(configFileInputStream); 
     System.out.println("Property file loaded "+ configPath); 
     configFileInputStream.close(); 
     String query = prop.getProperty("query"); 
     query += " where " + prop.getProperty("field") + " = 1"; 
     //query = query.replaceAll("\\\\", ""); 
     query = query.replace("\\", ""); 
     prop.replace("query", query); 
     prop.store(new FileOutputStream(configPath), null); 
     System.out.println("updated query="+ query); 
    } 

} 

和更新config.properties文件

#Mon Oct 03 14:34:27 IST 2016 
query=select * from users where id \= 1 
field=id 

,而我期待下面

#Mon Oct 03 14:34:27 IST 2016 
query=select * from users where id = 1 
field=id 

,並正從終端或CMD預期的輸出,端子輸出是

Property file loaded /home/arif/util-test/config.properties 
updated query=select * from users where id = 1 

您的幫助將不勝感激!謝謝

+0

@PeterLawrey,你在標記重複之前有沒有讀過問題? –

+2

@PeterLawrey這不是同一個主題,這裏的問題是'='是屬性文件中的特殊字符,因爲它用於分割鍵和給定屬性的值,使得它總是被轉義一個反斜槓,但對於最終用戶來說它是完全透明的,因爲調用'getProperty(「query」)'將返回沒有反斜槓的值 –

+0

爲什麼你想刪除反斜槓,因爲它對你來說是透明的?它只是一個實現細節 –

回答

1

您不能從屬性文件中刪除使用\,因爲這是如何定義要實現的屬性文件。

從的Javadoc Properties

所有這些鍵終止的字符可以被包括在由與前面的反斜線字符轉義他們的密鑰;例如,

\:\= 

此行

query=select * from users where id = 1 

是無效的,因爲它包含兩個轉義字符=。第二個需要逃脫。

你可以實現不同的屬性來不需要這個,但它不會是一個標準的屬性文件。

另一種存儲屬性的方法是XML,JSON和YAML。我更喜歡YAML,它通常更簡單/更清潔。

規格爲YAML http://www.yaml.org/spec/1.2/spec.html

Java庫YAML https://bitbucket.org/asomov/snakeyaml這是一個配置好的庫。我會從這開始。

+1

感謝您的建議,YAML語法看起來比屬性文件 –

+0

@ ArifKhan屬性是爲Java 1.0開發的,內置但是轉儲。 –

+0

@ArifKhan添加了一些鏈接。 –