我观察到以下代码删除了行尾字符(^ M DOS / Windows行尾字符)
Files.lines(Paths.get("filePath/file.txt"))
.forEach(System.out::print);
javadoc没有说它将删除它,是设计使然还是我在这里遗漏了什么?
如果我必须保留原始的行结束符怎么办?
答案 0 :(得分:0)
您自己将其删除。当您使用lines方法时,它将逐行选择每行并将其作为流传递,然后使用System.out.print而不是System.out.println进行打印,因此从流中不会打印任何新行。
希望有帮助。 :)
-编辑-
如注释中所述,对于.lines(),行尾是一个定界符,而定界符永远不会在标记中返回。您可以假设除最后一行外的每一行都以结尾结尾。
或者您可以如下更新代码:
Files.lines(Paths.get("filePath/file.txt")).map(p->p+"\n")
.forEach(System.out::print);
但是在这种情况下,即使在最后一行中,它也会添加行尾。