当前位置: 首页 > 面试题库 >

错误消息:流关闭

毕瀚
2023-03-14
问题内容

在类下运行以下代码时 FlightSearch

String moreSearch = "y";
    List<Flight> resultList;

    // load initial flight data into DB
    if (!init()) {
        return;
    }
    // A background thread to monitor changes in csv repository
    FileListner fl = new FileListner();
    fl.start();

    do {
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        // main thread gets input
        Input inputQuery = new Input();
        try {
            inputQuery.getQuery();
        } catch (InvalidException e1) {
            e1.getMessage();
        } finally {
            fl.stopThread();
        }
        // main thread STARTs processing task as background monitors csv
        // repo
        QueryProcessor processor = new QueryProcessor();
        resultList = null;
        resultList = processor.matchQuery(inputQuery);

        displayResult(resultList, inputQuery.getFlightClass());

        System.out
                .println("More Flight Query ? Press n/N to exit. Anyother key to continue searching.");

        try {
            moreSearch = br.readLine(); // LINE 56
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }


    } while (!moreSearch.equalsIgnoreCase("n"));

    System.out.println("Thank You !!!");

我收到以下错误:

java.io.IOException: Stream closed
at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:162)
at java.io.BufferedInputStream.read(BufferedInputStream.java:325)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at com.myApp.FlightSearch.main(FlightSearch.java:56)

我也试过搬家

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

走出do-while循环但徒劳无功。


问题答案:

问题

问题是br.close(),按照javadoc的说明,您执行了该操作,将关闭流 并释放与之关联的所有系统资源

为了快速验证,请注释掉:

if (br != null) {
//    try {
//        br.close();
//    } catch (IOException e) {
//        // TODO Auto-generated catch block
//        e.printStackTrace();
//    }
}

您可以s随时随地回答,没有任何例外。

一个办法

一种解决方案是在所有读取终止后关闭缓冲区读取器:

    String moreSearch = null;
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    try {
        do {
            // ...
            System.out.println("More Flight Query ? Press n/N to exit. Anyother key to continue searching.");
            moreSearch = br.readLine();
        } while (!moreSearch.equalsIgnoreCase("n"));

    } catch (IOException e) {
        Logger.getLogger(FlightSearch.class.getName()).log(Level.SEVERE, "Cant read line from a System.in based BufferedReader", e);
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException ignoreMe) {
                Logger.getLogger(FlightSearch.class.getName()).log(Level.SEVERE, "Can't close a System.in based BufferedReader", ignoreMe);
            }
        }
    }


 类似资料:
  • 在本章中,我们将讨论在使用SLF4J时获得的各种错误消息或警告以及这些消息的原因/含义。 无法加载类“org.slf4j.impl.StaticLoggerBinder”。 这是在类路径中没有提供SLF4J绑定时引起的警告。 以下是完整的警告 - 要解决此问题,需要添加任一日志框架绑定。本教程上一小节对此进行了解释说明。 注 - 这种情况发生在SLF4J的版本中,介于1.6.0和1.8.0-bet

  • 问题内容: 这是我的代码片段: 这应该给我一个错误,因为这些表甚至不存在。但是我得到的是: 数组([0] => 00000) 如何获得对该错误的更好描述,以便可以调试问题? 问题答案: 尝试以下方法: 在准备之前添加以下内容: 这将更改PDO错误报告类型,并在出现PDO错误时使其发出警告。尽管应该设置您的errorInfo,但它应该可以帮助您进行跟踪。

  • 我正在使用Eclipse将json隐藏到Java中的字符串中。但我一直收到: 有人能告诉我json有什么问题吗?我如何改变它使其有效?我对java和json相当陌生,如果我错过了任何应该包括的细节,我很抱歉。

  • 我为Money类编写了一个自定义Hibernate验证约束: 它工作正常,除了错误信息。我看到了非常奇怪的行为:找到了资源包,消息按名称解析,但它被包裹在特殊的字符中,如果消息不能按名称解析,通常会出现这些字符: 此处

  • 我正在尝试读取文件中的一行,在喷口中,然后将其发送到螺栓,但我一直收到流关闭错误。我关闭错误还是这里有什么问题? 这是我遇到的错误: Java语言io。IOException:溪流在周日关闭。nio。反恐精英。StreamDecoder。ensureOpen(StreamDecoder.java:46)在sun上。nio。反恐精英。StreamDecoder。在java上读取(StreamDeco

  • 我正在使用spring-cloud-stream:1.3.0.发行版、spring-cloud-stream-binder-kafka:1.3.0.发行版开发spring引导应用程序。我使用spring integration dsl拆分文件中的行,使用beanio将行转换为json,要求将成功的json消息写入一个kafka主题,并将错误消息写入不同的kafka主题。下面是application