【发布时间】:2018-12-11 18:12:15
【问题描述】:
我正在使用 Java 运行程序并将程序的文本输出读取到缓冲阅读器中。然后我想通过这样做打印出结果:
while((line=input.readLine()) != null){
System.out.println(line);
}
由于某种原因,在执行此操作时,readLine() 方法根本不会在文本中途返回,程序会无限期地等待。然而,当直接从命令行运行这个程序时,它的输出与预期的完全一样,只有 100 行左右的简单文本。什么可能导致 readLine() 在读取简单文本的过程中不返回?
【问题讨论】:
-
这个问题与 java-stream 或 stream 有什么关系?
-
需要一个可重现的例子
-
@chessprogrammer 练习的重点是将程序减少到仍然会产生错误的最小占用空间。你必须投入时间。
-
当你阅读“程序的文本输出”时,
readLine()可能会阻塞,直到程序写入另一行或程序关闭流,这通常只在程序退出时发生。一个典型的问题是程序等待你这边的输入,然后你就死锁了。 -
如果这段代码正好在中途阻塞,那么
input有问题。数据错误(错误的编码,例如 UTF-8)不太可能导致阻塞。远程连接超时可能就是这种情况。
标签: java command-line stream inputstream bufferedreader