仅更新键/值属性文件中的键?

时间:2012-08-08 13:46:48

标签: java properties

我正在尝试处理一个程序,取给定的输入文件为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'的空值,我无法将新值更新到此域

1 个答案:

答案 0 :(得分:1)

您应该可以使用Properties.stringPropertyNamesHashtable.remove轻松完成此操作,因为PropertiesHashtable的子类。

final Properties properties = ...;
for (final String name : properties.stringPropertyNames()) {
  if (name.startsWith("prefix.")) {
    properties.setProperty(name.substring(6, name.length()), properties.remove(name));
  }
}