2013-05-01 69 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块与上面的代码中的第一道防线。干杯!