【发布时间】:2016-05-21 07:52:04
【问题描述】:
try (Stream<String> lines = Files.lines(targetFile)) {
List<String> replacedContent = lines.map(line ->
StringUtils.replaceEach(line,keys, values))
.parallel()
.collect(Collectors.toList());
Files.write(targetFile, replacedContent);
}
我正在尝试替换文件每一行中的多个文本模式。但我观察到“\r\n”(字节等效 10 和 13)被替换为“\r”(仅 10),并且我的比较测试失败了。
我想保留输入文件中的换行符,并且不希望 java 触摸它们。任何人都可以建议是否有一种方法可以做到这一点,而不必使用单独的默认替换“\r\n”。
【问题讨论】:
-
抱歉错过了。刚刚添加。
-
刚刚删除了 replaceEach 以隔离问题及其似乎正在执行此操作的 Files.line()。
-
替换发生在哪里?您粘贴的代码创建了一个字符串列表,它没有任何换行符。
-
您是说“
"\r\n"... 正在被替换为"\r"”。问题是这种情况发生在哪里,因为流不这样做。Files.lines生成的字符串根本没有任何换行符。 -
Files.write可以将字符串列表写入行,并为每行添加系统特定的换行符。在 Windows 上,它应该是所需的\r\n序列。
标签: java java-8 newline java-stream replaceall