当前位置: 技术问答>java相关
Class Properties的用法,一个有关配置文件的修改保存的菜鸟问题
来源: 互联网 发布时间:2015-08-21
本文导语: 我想通过编写程序来修改配置文件的一些设置,我现在使用的方法是: Properties prop=new Properties (); prop.load(new FileInputStream(cfgfile)); 来获取配置文件 然后用prop.setProperty(key,value);重设一些配置 最后保存prop.store(new Fil...
我想通过编写程序来修改配置文件的一些设置,我现在使用的方法是:
Properties prop=new Properties ();
prop.load(new FileInputStream(cfgfile));
来获取配置文件
然后用prop.setProperty(key,value);重设一些配置
最后保存prop.store(new FileOutputStream(cfgfile),null);
但结果发现配置文件的设置虽然改了,但原有的注释全没了,且顺序都乱了,问:
1。怎样才能保留原始配置文件的风格,留有注释?
2。配置文件中的一些配置项使用“[”中括号括起来的,有的还用了两个中括号,这样做的用意是什么?
3。配置文件顺序打乱是否还能使用?
Properties prop=new Properties ();
prop.load(new FileInputStream(cfgfile));
来获取配置文件
然后用prop.setProperty(key,value);重设一些配置
最后保存prop.store(new FileOutputStream(cfgfile),null);
但结果发现配置文件的设置虽然改了,但原有的注释全没了,且顺序都乱了,问:
1。怎样才能保留原始配置文件的风格,留有注释?
2。配置文件中的一些配置项使用“[”中括号括起来的,有的还用了两个中括号,这样做的用意是什么?
3。配置文件顺序打乱是否还能使用?
|
像你这种要动态修改的配置文件,最好用xml文件来描述。
那样可以专门修改某个节点而不会影响其他的。但需要涉及到xml的解析和保存,麻烦了一点点。
一般情况读取不用保存的配置文件,用Properties还是很方便,另外你保存的时候可以用prop.store(new FileOutputStream(cfgfile.getAbsolutePath(),true),null);来保存。这样所有的数据是追加在原来的文件后,但读取时由于是后面key-value对覆盖前面的,所以仍然算是修改成功,而且原来的注释信息也都还在。只是你的配置文件就越来越大了。而且还是很乱。
那样可以专门修改某个节点而不会影响其他的。但需要涉及到xml的解析和保存,麻烦了一点点。
一般情况读取不用保存的配置文件,用Properties还是很方便,另外你保存的时候可以用prop.store(new FileOutputStream(cfgfile.getAbsolutePath(),true),null);来保存。这样所有的数据是追加在原来的文件后,但读取时由于是后面key-value对覆盖前面的,所以仍然算是修改成功,而且原来的注释信息也都还在。只是你的配置文件就越来越大了。而且还是很乱。
|
混乱也能用!