2

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

4

1 回答 1

1

Properties.stringPropertyNames使用and应该可以很容易地做到这一点,Hashtable.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));
  }
}
于 2012-08-08T13:56:17.633 回答