我正在使用java中的属性类为我的应用程序保存一些配置.这是我第一次使用房产,所以请温柔地跟我说:)
我可以从属性中插入和检索数据,没问题,但我希望将数据插入如下:
属性文件:
#Header generated by java ~ this is fine, I don't care
#Server 1 configuration
url=192.168.1.1
port=6546
username=max
password=123
#Server 2 configuration
url=192.168.2.1
port=6454
username:dude
password:123
#And so on...
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
public void setProp(String host, String port, String user, String pass,
String host2, String port2, String user2, String pass2)
{
try{
prop.setProperty("host", host);
prop.setProperty("port", porto);
prop.setProperty("username", user);
prop.setProperty("password", pass);
prop.setProperty("host2", host2);
prop.setProperty("port2", porto2);
prop.setProperty("username2", user2);
prop.setProperty("password2", pass2);
config.store(new FileOutputStream("configuration.properties"), "Server 1 Configuration");
}catch (Exception e) {
JOptionPane.showMessageDialog(null,"Error: "+e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:@Nathan不接近我假装.生成的属性文件是:
#Wed Apr 03 14:03:57 BST 2013
server1.url=192.168.1.1
server1.port=80
server2.password=qqq
server1.user=root
server2.port=88
server2.user=dude
server1.pass=123
server2.url=192.168.2.1
Run Code Online (Sandbox Code Playgroud)
我会寻找类似的东西:
#Wed Apr 03 14:03:57 BST 2013
#Server 1 details
server1.url=192.168.1.1
server1.port=80
server1.user=root
server1.pass=123
#Server 2 details:
server2.password=qqq
server2.port=88
server2.user=dude
server2.url=192.168.2.1
Run Code Online (Sandbox Code Playgroud)
我甚至不关心订单是否正确(如密码在url和port下等)我只需要将它们分组,就像现在我的例子中一样.
属性文件不像那样分层.(还有其他格式,如YAML或XML,但不是这一种.)而是每一行都是一个键值对,其中键必须在整个文件中是唯一的.(Properties类是从Hashtable扩展的快速黑客.)更改属性文件中的键:
#Server 1 Configuration
server1.url=192.168.1.1
server1.port=6546
server1.username=max
server1.password=123
#Server 2 configuration
server2.url=192.168.2.1
server2.port=6454
server2.username:dude
server2.password:123
Run Code Online (Sandbox Code Playgroud)
然后将代码更改为:
prop.setProperty("server1.url", host);
Run Code Online (Sandbox Code Playgroud)
因为Properties扩展了Hashtable,并且哈希表为您提供了它们自己的键值对的内部排序,所以当您从Properties对象生成属性文件时,条目将全部混乱.由于您希望键处于任意顺序,因此排序也不容易.我将使用代码生成属性文件的初始版本,然后按照您想要的顺序移动东西,并使用该属性文件继续.如果您需要以编程方式生成属性文件,那么您将需要编写代码来写入文件而不是属性如何.