source.properties と destination.properties の 2 つのプロパティ ファイルを読み取り、ソースから宛先に各行のキーと値のペアを書き込む Java で記述されたプログラムがあります。Java 標準 API の PrintWriter または FileWriter の代わりに、Apache commons io API の FileUtils.writeStringToFile メソッドを使用することにしました。私が見つけたのは、ソース ファイルの最後の行だけが宛先ファイルに上書きされていることです。
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 ループが 2 回通過し、map にすべての正しいデータが含まれ、FileUtils のメソッドが 2 回呼び出され、ソース ファイルから各行のデータが書き込まれることがわかりました。
前述の出力が得られる理由を誰かに説明してもらえますか?
[更新]
PrintWriter を使用して、私が望んでいたことを達成することができました。