Java 注释掉属性文件中的属性
我正在使用java操作一个属性文件。我有一个要求,就像我必须在更新之前注释掉一个属性值,并用新值添加该属性。像 路径=c:\ 更新后应该是这样的 #路径=c:\Java 注释掉属性文件中的属性,java,configuration-files,Java,Configuration Files,我正在使用java操作一个属性文件。我有一个要求,就像我必须在更新之前注释掉一个属性值,并用新值添加该属性。像 路径=c:\ 更新后应该是这样的 #路径=c:\ path=c:\my\u文件夹 有可能做到这一点吗?下面是我用来编辑属性文件的代码 Properties prop=new Properties(); String currentDirectary=System.getProperty("testDir"); String path=cu
path=c:\my\u文件夹 有可能做到这一点吗?下面是我用来编辑属性文件的代码
Properties prop=new Properties();
String currentDirectary=System.getProperty("testDir");
String path=currentDirectary+"/test.Properties";
FileOutputStream out=new FileOutputStream(path,true);
prop.setProperty("path","c:\\my_folder");
prop.store(out, null);
正如注释中指出的,标准的
Properties
类不处理逐行注释,而是通过Properties#store
方法处理初始注释。所以,如果你想要这个功能,你必须自己编写代码。在这里,您可以找到一个可轻松适应您需要的替代实现。下面的“一种黑客”如何:只需构建一个包含旧值的注释
,并将其传递给store方法,注释将写入文件的stat,因此,新值后面不会紧跟着一个已注释的旧值
下面是一些示例代码:
@Test
public void propCom() throws FileNotFoundException, IOException {
Properties p = new Properties();
FileReader fr = new FileReader("some.properties");
p.load(fr);
fr.close();
StringBuilder comments = new StringBuilder("Some properties\n");
String oldValue = p.getProperty("path");
comments.append("path=");
if(oldValue != null) {
comments.append(oldValue);
}
comments.append("\n");
p.setProperty("path", "c:\\some\\other\\dir");
FileWriter fw = new FileWriter("some.properties");
p.store(fw, comments.toString());
fw.close();
}
从这个内容开始
path=c:\\
更新的属性文件如下所示
#Some properties
#path=c:\
#
#Thu May 09 00:41:49 CEST 2013
path=c\:\\some\\other\\dir
无法使用标准库保存注释。您需要自己编写代码。一种更简单的方法可能是重命名旧文件,以便您可以比较与
diff
或类似文件所做的更改。您是否尝试注释的不是属性,而是值?