【问题标题】:Does Scanner in Java block on file input?Java中的扫描仪是否会阻止文件输入?
【发布时间】:2014-06-23 18:25:40
【问题描述】:

我目前正在编写一个日志阅读器,它应该扫描一个当前正在写入的日志文件,然后将该数据上传到服务器。该文件每小时更改一次。我想知道扫描仪中的 next() 方法是否像标准输入一样阻塞文件结尾。我无法在 Google 搜索中在线找到此信息。

谢谢。

【问题讨论】:

  • 您可以自己在大约 5 分钟内轻松尝试
  • 无需重新发明轮子:Commons IO Tailer
  • 感谢邓肯的帮助。

标签: java text io


【解决方案1】:

技术上正确答案:是的,Scanner 使用标准 IO 调用,可能会阻塞输入。当数据不可用但尚未到达文件末尾时,它将执行此操作。如果它是从套接字读取的,就会出现这种情况。

您正在寻找的答案:在您描述的情况下,扫描仪不会阻塞,因为它已到达文件末尾。即使将来可能会写入文件,当您尝试读取文件末尾时也会生成 EOF。

【讨论】:

  • 感谢您的准确和成功的答复。
【解决方案2】:

这似乎不太可能,因为一旦到达文件末尾,它就认为它已完成,因为它无法知道文件可能会更改。

我还建议您查看 Scanner 的源代码以进行仔细检查。

【讨论】:

    猜你喜欢
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多