在Java中将特殊字符写入属性文件时出现问题

时间:2020-05-02 08:19:55

标签: java properties-file

我需要将键值对添加到属性文件。 除了#和=每个例程,每个字符都可以正常工作,在字符前附加一个\。

请分享我的任何建议。

当前属性文件数据

纸张=归一化

我要对此键发表评论

#paper =规范化

但是正在发生的事是\正在被添加

\#paper =规范化

'''

      String valueOfKey = updatedMap.get(key);

      updatedMap.remove(key);

      updatedMap.put("#" + key, valueOfKey);

   String totalPath = propertiesService.getFilePath(request) + "\\" + propertiesModel.getSelectedFile();

      propertiesService.updatePropertyfile(updatedMap, request, totalPath);

'''

'''

public boolean updatePropertyfile(Map<String, String> map, HttpServletRequest request, String fileName) {
      Properties props = new Properties();
Writer Out = null;
      File file = new File(fileName);
try {
        FileOutputStream out = new FileOutputStream(file);
        Out = new BufferedWriter(new OutputStreamWriter(out));
        Set<String> keyset = map.keySet();
        Iterator iter = keyset.iterator();
        while (iter.hasNext()) {
          String key = (String) iter.next();
          props.setProperty(key, (String) map.get(key));
   }
        props.store(Out, "update");
        Out.flush();
        Out.close();
      } catch (IOException e) {
        return false;
      }
 return true;
    }

'''

属性文件中的值被写入

  • \#paper =标准化

1 个答案:

答案 0 :(得分:1)

hash标签是Java属性文件中的注释的引言:

# Created by generator on 2020-05-01
#current properties file data
paper = Normalised

#want to update like
#paper = Normalised – but this is a comment …

#but what is happening is \# is getting added
\#paper = Normalised # Backslash required …

因此,使用反斜杠进行转义是使其正常工作的唯一方法。

不幸的是,当您需要使用java.util.Properties以外的其他API读取属性文件时,必须将此功能添加到解析器中。

相关问题