我有一个内容为"hi there tom!\n"
的文件。也就是说,文件的最末端有一个换行符。
在该文件上运行此代码时:
File file = new File(path.toString());
String content = new Scanner(file).useDelimiter("\\Z").next();
在\n
中不存在尾随的content
。如何保持\n
?
Scanner.useDelimiter()
将其论证解释为Pattern
(正则表达式)。并引用Pattern
的API文档:
Summary of regular-expression constructs
边界匹配器
\Z
- 输入结束但是对于最终终结符,如果有的话\z
- 输入结束
因此,为了在不忽略最后一行终止符的情况下读取文件的末尾,将参数更改为useDelimiter()
从"\\Z"
更改为"\\z"
。
使用nextLine()而不是next()来消耗每行末尾的\n
字符。