当前位置:  开发笔记 > 编程语言 > 正文

更新属性文件的更好的类?

如何解决《更新属性文件的更好的类?》经验,为你挑选了3个好方法。

虽然java.util.properties允许读取和写入属性文件,但写入不会保留格式.这并不奇怪,因为它与属性文件无关.

是否有一个PropertyFile类 - 或者某些类 - 保留注释和空行并更新属性值?



1> Il-Bhima..:

它没有比Apache的Commons Configuration API 好多少.这提供了从Property文件,XML,JNDI,JDBC数据源等配置的统一方法.

它对属性文件的处理非常好.它允许您从属性中生成一个PropertiesConfigurationLayout对象,该对象保留尽可能多的有关属性文件的信息(空格,注释等).保存对属性文件的更改时,将尽可能保留这些更改.


示例代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.PropertiesConfigurationLayout;

public class PropertiesReader {
    public static void main(String args[]) throws ConfigurationException, FileNotFoundException {
        File file = new File(args[0] + ".properties");

        PropertiesConfiguration config = new PropertiesConfiguration();
        PropertiesConfigurationLayout layout = new PropertiesConfigurationLayout(config);
        layout.load(new InputStreamReader(new FileInputStream(file)));

        config.setProperty("test", "testValue");
        layout.save(new FileWriter("path\\to\\properties\\file.properties", false));
    }
}

也可以看看:

http://mvnrepository.com/artifact/commons-configuration/commons-configuration/

https://commons.apache.org/proper/commons-configuration/apidocs/org/apache/commons/configuration2/PropertiesConfigurationLayout.html


提供的代码无法编译.. propsFile未声明

2> John Rix..:

Patrick Boos提供的使用Apache Commons Configuration库的示例代码不必要地复杂化.除非需要对输出进行一些高级控制,否则不需要显式使用PropertiesConfigurationLayout.PropertiesConfiguration本身足以保留注释和格式:

PropertiesConfiguration config = new PropertiesConfiguration("myprops.properties");
config.setProperty("Foo", "Bar");
config.save();

(注意:此代码适用于现有的1.10稳定版本.我没有检查它是否适用于当前可用的2.0 alpha版本.)



3> Romain Linso..:

您可以查看包含PropertiesConfiguration类的Apache Commons Configuration.但是,由于我从未使用它,我不知道它是否保留了评论和格式......

然而,它试了一下......

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有