如何使用 java 在属性文件中创建新行?

How do I create a new line in a properties file using java?

我正在尝试使用 java 更新属性文件。该文件的结构应如下所示:

IDs = \
11:22:33:44:55:66:77,\
11:22:33:44:55:66,\
1C:BA:8C:20:C5:0A

但我得到的只是:

IDs=11\:22\:33\:44\:55\:66\:77\:88,\\njj\:jj\:jj\:jj\:jj\:jj\:jj\:jj,\\n55\:55\:55\:55\:55\:55\:55\:55,\\n

我只是找不到很多关于使用 java 编写属性文件的信息,我完全迷路了。另一个问题是“:”是自动转义的,我该如何防止呢? 我使用的代码:

String str = "";
for (User u : values){
    str = str + u.getId() + ",\"+"\n";
}
prop.setProperty("IDs", str);

属性文件中一行末尾的反斜杠表示 属性 值在下一行继续。所以你的 属性 等同于

IDs = 11:22:33:44:55:66:77,11:22:33:44:55:66,1C:BA:8C:20:C5:0A

这就是您应该设置的 属性 值。不幸的是,Properties 永远不会像您希望的那样在多行上格式化它。它会将您存储在 属性 中的反斜杠和 \n 作为 属性 值的一部分,从而将它们转义。所以你应该做的就是接受值在一行上,然后简单地将 属性 值设置为 "11:22:33:44:55:66:77,11:22:33:44:55:66,1C:BA:8C:20:C5:0A".

只需使用 commons-io 库,(sting1, file, true); 中的 true 告诉函数追加。

  String sting1 = "IDs = \";
    String sting2 = "11:22:33:44:55:66:77,\";
    String sting3 = "11:22:33:44:55:66,\";
    String sting4 = "1C:BA:8C:20:C5:0A";

    File file = new File("{filePath}");

    FileUtils.writeStringToFile(sting1, file, true);
    FileUtils.writeStringToFile(sting2, file, true);
    FileUtils.writeStringToFile(sting3,file,true);
    FileUtils.writeStringToFile(sting4,file,true);