如何使Scanner.next()保留最后一个“ \ n”?

时间:2019-04-11 04:55:08

标签: java file java.util.scanner

我有一个文件,内容为"hi there tom!\n"。也就是说,文件末尾有换行符。

在该文件上运行此代码时:

File file = new File(path.toString());
String content = new Scanner(file).useDelimiter("\\Z").next();

结尾的\ncontent中不存在。如何使\n被保留?

2 个答案:

答案 0 :(得分:1)

Scanner.useDelimiter()将其自变量解释为Pattern(正则表达式)。并引用Pattern的API文档:

  

正则表达式构造概述

     

边界匹配器

     
      
  • \Z –输入的结尾,但对于最终终止符(如果有)
  •   
  • \z –输入的结尾
  •   

因此,为了在不忽略最后一行终止符的情况下读取文件的末尾,请将参数useDelimiter()"\\Z"更改为"\\z"

答案 1 :(得分:1)

使用nextLine()代替next()在每一行的末尾消耗\n字符。