java - IOException:从java中的控制台读取时出现流关闭错误

标签 java ioexception

我通过创建客户类的对象从“main”调用 name_setter() 方法,以从控制台获取输入并将输入的名称存储在客户类对象的“name”变量中。

import java.io.*;

public class Rental {

    public static void main(String[] args) {
        customer c = new customer();
        c.name_setter(); // calls the method from customer class
    }
}

class customer {
    String name;

    String name_setter() {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.println("Enter the name:"); // executes till here
            name = br.readLine(); // stream close error
            System.out.println(name);
            if (name.length() == 0) {
                name = br.readLine();
            }
        } catch (IOException e) {
            System.out.println("" + e);
        }

        return name;
    }
}

我收到的错误是:

java.io.IOException: Stream closed

最佳答案

正如 Hovercraft Full Of Eels 所说,这段代码在运行时不会引起问题。
它可能与引发异常的人不同:java.io.IOException:流已关闭

注意:您将 BufferedReaderSystem.in InputStream 链接起来。
当您关闭 BufferedReader 时,它也会关闭 System.in

例如,在此代码末尾,System.in 已关闭:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.close();
br = new BufferedReader(new InputStreamReader(System.in));

如果您想在 System.in 中再次读取,则不应关闭 BufferedReader
通过推论,我认为问题就出在于此。

您对 Scanner 实例也有同样的问题。

关于java - IOException:从java中的控制台读取时出现流关闭错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41314010/

相关文章:

java - 类和类加载器

java - 将 Matlab 组件添加到 Java JWindow

java - 从 InputStream 读取时出现 IOException

java - IOException 为获取消息返回 null

当前 MultipartFile 的 java.io.FileNotFoundException

java - 增加 JButton 中的字体大小

java - 如何从数据库获取值并为多个 JButton 设置颜色

C# SSLStream 读取函数抛出 IOException

java - Mongodb Java - 如何使用 find() 或 findOne() 返回受限字段

Java - IOException : Failed to open file: Access denied