java - BufferedReader 卡在最后一个输入行而没有结束程序

标签 java bufferedreader inputstreamreader system.in

我正在使用BufferedReaderSystem.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/

相关文章:

java - 非常基本的 drools 5 运行,基本设置和快速入门

java - 将 ArrayList 插入 While 条件?

java - 从两个文本文件实例化两个数组

java - 当我将编码设置为 UTF-16 时,为什么 FileInputStream readline 返回 null?

java - 在没有文件处理的情况下计算java中的空格、制表符和新行

java - 相当于 Java 资源的 FileReader

java - Java 中的方法签名是否包括其返回类型?

java - 为什么 0.5==0.5f 为真而 0.1==0.1f 为假?

Java InputStreamReader 不变的停顿

java - 关于 DataOutputStream 的困惑