我正在尝试处理一个程序,取给定的输入文件为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'的空值,我无法将新值更新到此域
答案 0 :(得分:1)
您应该可以使用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));
}
}