java - 如何使 Scanner.next() 保留最后一个 "\n"?

标签 java file java.util.scanner

我有一个文件,其内容为“嗨,汤姆!\n”。也就是说,文件的最后有一个换行符。

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

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

内容中不存在尾随的\n。如何保留 \n

最佳答案

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

Summary of regular-expression constructs

Boundary matchers

  • \Z – The end of the input but for the final terminator, if any
  • \z – The end of the input

因此,为了读取到文件末尾而不忽略最后一行终止符,请将 useDelimiter() 的参数从 "\\Z" 更改为“\\z”

关于java - 如何使 Scanner.next() 保留最后一个 "\n"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55624972/

相关文章:

java - 如果错误,请在发布前使用 Javascript 更改文本框的背景颜色

java - 使用 Jackson,如何获得任意 pojo 类的已知 JSON 属性列表?

java - 在 Java 中模拟文件 - 模拟内容 - Mockito

java - LogBack RollingFileAppender 不写入日志文件(尽管 FileAppender 有效)

使用 gradle run 启动应用程序时,java.util.scanner 抛出 NoSuchElementException

java - 如何在java中使用数组在一行中设置多个选择条件?

Java:使用扫描仪时总是收到 NoSuchElementException

java - html 页面上的验证码图像链接

java - 警告 : No mapping found for HTTP request with URI [/Spring3MVC/hello. html] 在 DispatcherServlet 中,名称为 'spring'

java - jar 文件不显示(关闭太快)