表单加载事件加载config.properties文件时出错

时间:2013-05-01 14:59:07

标签: java properties

大家感谢您的时间和帮助,我有一个Java表单,用于创建和读取java的属性文件。

我可以编写例如config.properties的文件,但是当我尝试阅读时,我得到一个错误的字符串信息     USENAME =一     path = / home / a / desktop

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); 
} 

我想用文本的内容填充文本,例如: {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} 而不是{username = a,path = / home / a / Desktop}。我输入的问题只是文本的形式。现在我需要检查一下?或改变?

1 个答案:

答案 0 :(得分:0)

标准Properties类不支持您要查找的功能。 public synchronized void load(InputStream inStream)类的Properties方法期望属性与KeyValue配对相似。Key是一个没有任何空格或{{{ 1}}或=。现在,如果你想保持你的属性如下:

:

你想要获得关键“路径”的“/ home / a / Desktop”,那么你需要以不同的方式处理它。一般的想法是将InputStream加载到 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 类的实例中,从中滑动空白区域。你可以像下面这样做:

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()); 块中的第一行。干杯!