gpt4 book ai didi

java - 如何在 java 中亲自格式化属性文件?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:48:12 34 4
gpt4 key购买 nike

我正在使用 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...

这是我的代码:

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

编辑:@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

我会寻找类似的东西:

#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

我什至不关心顺序是否正确(例如密码在 url 之上和端口之下等)我只需要将它们分组,就像它们现在在我的示例中一样。

最佳答案

属性文件不是那样分层的。 (还有其他格式,如 YAML 或 XML,但不是这种格式。)相反,每一行都是一个键值对,其中的键在整个文件中必须是唯一的。 (Properties 类是从 Hashtable 扩展而来的快速 hack。)更改属性文件中的键:

#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

然后将您的代码更改为:

      prop.setProperty("server1.url", host);

因为 Properties 扩展了 Hashtable,并且 hashtable 为您提供了它们自己的键值对内部排序,所以当您从 Properties 对象生成属性文件时,条目将全部困惑。由于您希望键以任意顺序排序,因此排序也不容易。我会使用代码生成属性文件的初始版本,然后按照您想要的顺序移动内容,并继续使用该属性文件。如果您需要以编程方式生成属性文件,那么您需要编写代码来写入文件,而不是 Properties 如何执行它。

关于java - 如何在 java 中亲自格式化属性文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787792/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com