将属性保存在JAVA格式的文件中

时间:2011-04-08 18:19:58

标签: java properties formatting

有没有办法使用Properties对象在Java中保存一些格式的属性?就像有没有办法在条目之间引入新的线条?或者在每个密钥之前发表评论?

我知道这可以通过普通的I / O轻松完成,但想知道是否有办法使用属性对象。

5 个答案:

答案 0 :(得分:19)

在每组属性之间编写注释的关键是将它们存储在多个Properties对象中。

FileOutputStream fos = new FileOutputStream("c:/myconfig.property");
Properties prop = new Properties();
prop.put("com.app.port", "8080");
prop.put("com.app.ip", "127.0.0.1");

prop.store(fos, "A Test to write properties");
fos.flush();

Properties prop2 = new Properties();
prop2.put("com.app.another", "Hello World");
prop2.store(fos, "Where does this go?");
fos.flush();

fos.close();

这将产生诸如

之类的输出
#A Test to write properties
#Fri Apr 08 15:28:26 ADT 2011
com.app.ip=127.0.0.1
com.app.port=8080
#Where does this go?
#Fri Apr 08 15:28:26 ADT 2011
com.app.another=Hello World

答案 1 :(得分:2)

我创建了一个处理属性注释的类。 各个属性的通用标题注释和注释。

查看:CommentedProperties JavaDoc

可以在此处下载jar文件:Download jar file from sourceforge

答案 2 :(得分:0)

没有。 Properties元素如何知道每个键之前要写的注释?

您可以在Properties.store( Writer, String ).之后添加文件级评论。在评论和时间戳评论之后:

  Then every entry in this Properties table is written out, one per line.
  For each entry the key string is written, then an ASCII =, then the associated
  element string. For the key, all space characters are written with a 
  preceding \ character. For the element, leading space characters, but not 
  embedded or trailing space characters, are written with a preceding \ character. 
  The key and element characters #, !, =, and : are written with a preceding 
  backslash to ensure that they are properly loaded. 

另一方面,可以提供有关在属性文件中写入额外行和注释的说明 - 使用Properties对象作为数据源。

答案 3 :(得分:0)

Properties对象本身不保留有关文件保存方式结构的任何详细信息。它只有一个数据映射,实际上意味着它甚至不必按照它们被读取的顺序写入它们。您必须使用普通I / O来保持格式并进行所需的更改。

答案 4 :(得分:0)

班级CommentedProperties

将解析属性

 ## General comment line 1
 ## General comment line 2
 ##!General comment line 3, is ignored and not loaded
 ## General comment line 4


 # Property A comment line 1
 A=1

 # Property B comment line 1
 # Property B comment line 2
 B=2

 ! Property C comment line 1
 ! Property C comment line 2

 C=3
 D=4

 # Property E comment line 1
 ! Property E comment line 2  
 E=5

 # Property F comment line 1
 #!Property F comment line 2, is ignored and not loaded
 ! Property F comment line 3  
 F=5 

属性文件注释是:

General comment line 1
General comment line 2
General comment line 4

所以属性“A”的评论是:

Property A comment line 1

所以属性“B”的评论是:

Property B comment line 1
Property B comment line 2

所以财产“C”

Property C comment line 1
Property C comment line 2

所以属性“D”的评论是空的。

所以财产“E”的评论是:

Property E comment line 1
Property E comment line 2

所以财产“F”评论是:

Property F comment line 1
Property F comment line 3