我正在尝试重新格式化 LinkedHashMap 的输出以排除逗号和大括号。
这是我的看跌期权:
token.put("[Server.Protocol]", url.getProtocol() + "\n");
token.put("[Server.hostName]", url.getHost() + "\n");
token.put("[Server.Port]", url.getPort() + "\n");
values.add(token.toString());
token 是我的 LinkedHashMap,values 是我的 LinkedList。
这是我的输出:
{[Server.Protocol]=https
, [Server.Name]=myserver
, [Server.Port.HTTPS]=123
}
这是我想要的:
[Server.Protocol]=https
[Server.hostName]=myserver
[Server.Port]=123
这是我的打印方法:
private void webconfigToINI() throws IOException {
File fout = new File(propFile);
try {
FileOutputStream fos = new FileOutputStream(fout, true /* append */);
writer = new PrintWriter(fos);
if (fos.getChannel().size() == 0)
writer.print("[Code]\n");
for (String value : values) {
//writer.print(value.substring(1, value.length()-1));
writer.print(value);
}
// writer.print("[Code]\n");
writer.flush();
writer.close();
fos.close();
} catch (Exception e) {
throw e;
}
}
最佳答案
这里:
values.add(token.toString());
您正在 map 对象上调用toString()
。这将调用 AbstractMap 中实现的 toString()
基类。该方法迭代条目,并在其条目周围添加 { } 大括号。
因此,简单的答案:不要调用该方法!
相反,您可以迭代 entrySet()手动创建 map 对象,提取键、值并将其写入文件中。
除此之外:您首先需要那张 map 吗?如果 token
仅用于调用 toString()
来获取这些字符串...那么使用 StringBuilder 会更有效。只需将您的字符串插入该构建器,并最终使用它即可。
关于java - 格式化 LinkedHashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53633909/