我正在使用BufferedReader
从 System.in
读取数据(文本文件重定向上下文: < file.txt
)然后将其写入控制台。问题是我的程序显示了除最后一行之外的所有行,并且仍然可以在不执行任何操作的情况下工作。如果我手动结束它,它将写入最后一行。
这是我的代码:
public void updateText() throws IOException {
try {
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String inputLine;
while ((inputLine = bufferedReader.readLine()) != null) {
System.out.println(inputLine);
}
inputStreamReader.close();
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
最佳答案
这是等待可用数据的另一种方法(引用:Java 11 - method BufferedReader.ready()):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class TestClass {
public static void main(String[] args) {
try (InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
String line;
// wait until data available
while (!bufferedReader.ready()){
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例输出:
Hello world
Hello world
Hello world
Hello world
关于java - BufferedReader 卡在最后一个输入行而没有结束程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69981421/