我正在尝试处理一个程序,给定的输入文件是in.properties
,并且我想将其再次写入一个新文件out.properties
,并从文件内容中丢弃前缀prefix
即输入文件的内容是
prefix.sum.code.root=/compile/pkg
输出文件的内容为
sum.code.root=/compile/pkg
这是我的代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class Dummy {
public static void main(String args[])
{
Properties prop =new Properties();
try{
//load a property file
prop.load(new FileInputStream ("C:\\Users\\user\\Desktop\\ant\\Filtering\\input.properties"));
for (String key : prop.stringPropertyNames()){
prop.remove(key);
}
prop.store(new FileOutputStream("C:\\Users\\user\\Desktop\\ant\\Filtering\\output.properties"), null);
}catch (IOException e)
{
e.printStackTrace();
}
}}
“KEY”返回空值,我无法将新值更新到该字段
最佳答案
您应该能够使用 Properties.stringPropertyNames
相当轻松地完成此操作和Hashtable.remove
,因为 Properties
是 Hashtable
的子类。
final Properties properties = ...;
for (final String name : properties.stringPropertyNames()) {
if (name.startsWith("prefix.")) {
properties.setProperty(name.substring(6, name.length()), properties.remove(name));
}
}
关于java - 仅更新键/值属性文件中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865927/