有没有办法使用Properties对象在Java中保存一些格式的属性?就像有没有办法在条目之间引入新的线条?或者在每个密钥之前发表评论?
我知道这可以通过普通的I / O轻松完成,但想知道是否有办法使用属性对象。
答案 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)
将解析属性
## 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