2013-05-01 93 views
0

夥計們感謝您的時間和幫助,我有一個用於創建和讀取java屬性文件的Java表單。表單加載事件加載config.properties文件時出錯

我可以寫例如config.properties文件,但是當我嘗試閱讀,我得到一個錯誤的字符串信息 USENAME =一個 路徑= /家庭/ A /桌面

private void formWindowOpened(java.awt.event.WindowEvent evt) { 

try { 
    InputStream inStream = new FileInputStream("config.properties"); 
    Properties rbReg = new Properties(); 
    rbReg.load(inStream); 
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    DateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); 
    Date date = new Date(); 

    text_box_smtp_server.setText(rbReg.getProperty("path")); 

    System.out.println(rbReg); 
} catch (Exception e) { 
    System.out.println("Error reading config file " + e); 
} 

我要填寫帶有路徑內容的文本例如: {username = a,path =/home/a/D esktop} 而不是{username = a,path =/home/a/Desktop}。這個問題只是以我輸入的文本的形式出現。現在我要檢查什麼?或改變?

+0

我已經讀過幾次了,*仍然*不明白這個問題。這與Swing有什麼關係?鑑於您可能會在命令行應用程序中使用相同的代碼屬性。或者一個servlet,它似乎 - *沒有!* – 2013-05-01 15:27:42

回答

0

標準Properties類不支持您正在查找的功能。 Properties類的public synchronized void load(InputStream inStream)方法預計將類似於Key,Value配對的屬性。 Key是一個詞,沒有任何空格或=:。現在,如果你想保持你的屬性,如波紋管:

u s e r n a m e = a 
p a t h = /h o m e/a/D e s k t o p 

你想要得到「/家庭/ A /桌面」爲重點的「路徑」,那麼你需要不同的方式處理它。總體思路是將InputStream加載到Properties類的實例中,從中滑出空白區域。你可以這樣做波紋管:

InputStream inputStream = new FileInputStream("config.properties"); 
BufferedReader br = null; 
StringBuilder sb = new StringBuilder(); 
String line; 
br = new BufferedReader(new InputStreamReader(inputStream)); 
while ((line = br.readLine()) != null) { 
    int length = line.length(); 
    for (int i = 0; i < length; i++) { 
      if (line.charAt(i) != ' ') { 
       sb.append(line.charAt(i)); 
      } 
     } 
     sb.append('\n'); 
} 
InputStream inStream = new ByteArrayInputStream(sb.toString().getBytes()); 

所有你需要的是更換try塊與上面的代碼中的第一道防線。乾杯!