首页 > 解决方案 > InputStream 读取“合理”长度的文本,避免阻塞

问题描述

我正在尝试从用户输入中逐个字符地读取,如下所示:

while ((i = System.in.read()) != -1) {
  // do stuff with input...
  char c = (char)i;

}

正如预期的那样,这会阻塞,直到到达流的末尾。从文档InputStream允许available()给出数据源中剩余字节的估计值。

使用这种方法,即检查System.in.available() > 0,每当遇到换行符时都会导致退出 while 循环。

我需要逐个字符地读取用户输入的“合理”长度的文本。我可以假设来自用户输入的任何此类文本的长度都以 some 为界N

如果可能的话,如何使用接近我最初打算的解决方案来最好地实现这一点?到目前为止,我遇到的问题似乎没有解决这个问题,但我可能弄错了。提前致谢。

标签: javainputstreamblocking

解决方案


推荐阅读