我有一个用 Java 编写的程序,读取两个属性文件 - source.properties 和destination.properties 并写入从源到目标的每一行的键/值对。我决定使用来自 apache commons io api 的 FileUtils.writeStringToFile 方法,而不是来自 java 标准 api 的 PrintWriter 或 FileWriter。我发现只有源文件中的最后一行被覆盖到目标文件。
source.properties 的内容
username=a
host=abcdestination.properties 的内容
host=abc
static void writeToFile(Map<String,String> map, String pathToFile) {
Iterator<Map.Entry<String,String>> itr = map.entrySet().iterator();
File path = new File(pathToFile);
while(itr.hasNext()) {
Map.Entry<String,String> pairs = (Map.Entry<String,String>)itr.next();
FileUtils.writeStringToFile(path,pairs.getKey() + "=" + pairs.getValue());
}
}
map 包含来自源文件的键/值对。当我调试程序时,我能够看到 while 循环经过两次,并且 map 包含所有正确的数据,并且 FileUtils 中的方法被调用了两次,并从源文件中写入了每一行数据。
有人可以向我解释为什么我会得到上述输出吗?
[更新]
我能够使用 PrintWriter 实现我想要的。