当前位置: 首页 > 知识库问答 >
问题:

流关闭错误-Storm

司空思聪
2023-03-14

我正在尝试读取html" target="_blank">文件中的一行,在喷口中,然后将其发送到螺栓,但我一直收到流关闭错误。我关闭错误还是这里有什么问题?

public class InputSpout extends BaseRichSpout {
    private SpoutOutputCollector collector;
    public void
    declareOutputFields( OutputFieldsDeclarer declarer) {
        declarer.declare( new Fields("logfile"));
    }
    private FileReader fileReader;
    private boolean completed = false;
    private TopologyContext context;
    @Override
    public void open( Map config, TopologyContext context, SpoutOutputCollector collector) { 
        try {
            this.context = context;
            this.fileReader = new FileReader(("logfile.txt").toString());
        } catch (FileNotFoundException e) {
            throw new RuntimeException("Error reading file "
                    + ("logfile"));
        }
        this.collector = collector;
    }
    public void nextTuple() {


        if (completed) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {

            }
        }
        String str;
        BufferedReader reader = new BufferedReader(fileReader);
        str = null;
        try {
            str = reader.readLine();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        try {
            while (str != null) {
                this.collector.emit(new Values(str));
                str = reader.readLine();
            }

        } catch (Exception e) {
            throw new RuntimeException("Error reading typle", e);
        } finally {
            completed = true;
        }
        try {
            reader.close();
            fileReader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

这是我遇到的错误:

Java语言io。IOException:溪流在周日关闭。nio。反恐精英。StreamDecoder。ensureOpen(StreamDecoder.java:46)在sun上。nio。反恐精英。StreamDecoder。在java上读取(StreamDecoder.java:147)。io。InputStreamReader。在java上读取(InputStreamReader.java:184)。io。BufferedReader。在java中填充(BufferedReader.java:154)。io。BufferedReader。java上的readLine(BufferedReader.java:317)。io。BufferedReader。myStorm上的readLine(BufferedReader.java:382)。输入口。backtype处的nextTuple(InputSpout.java:52)。暴风雨守护进程。遗嘱执行人$fn\uu 4654$fn\uu 4669$fn\uu 4698。在backtype调用(executor.clj:565)。暴风雨util$async\u循环$fn\u 458。在clojure调用(util.clj:463)。郎.AFn。在java上运行(AFn.java:24)。lang.Thread。运行(Thread.java:745)

共有1个答案

庾奇思
2023-03-14

您正在关闭nextTuple中fileReader使用的InputStream,使其无法用于后续调用。无需关闭此Reader-只需在读取所有数据后关闭单个BufferedReader

 类似资料:
  • 问题内容: 在类下运行以下代码时 我收到以下错误: 我也试过搬家 走出do-while循环但徒劳无功。 问题答案: 问题 问题是,按照javadoc的说明,您执行了该操作,将关闭流 并释放与之关联的所有系统资源 。 为了快速验证,请注释掉: 您可以随时随地回答,没有任何例外。 一个办法 一种解决方案是在所有读取终止后关闭缓冲区读取器:

  • 我正在尝试为我正在制作的游戏添加声音,但每次尝试加载声音时,我都会收到流关闭异常。我不明白为什么会这样。 加载声音: 我收到的错误消息是:“线程”main“java.io.IOException中的异常:Stream closed at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:134) at java.io.

  • 我试图得到我的网站,我有一些问题时启动我的XAMPP Apache服务器 我在这里尝试了解决方案,但没有成功 我尝试的是: 将默认端口从80和433更改为8080和443 杀死所有HTTP连接与 逆转我所有的更改(因为我一直试图从这里安装一个ssl安全证书) 我没有成功添加安全证书,现在Apache甚至没有启动 我知道这是一个非常常见的问题,我读过很多关于这个问题的答案,但都没有成功。 以下是我对

  • 但结果显示相同。有人能帮忙吗? 提前感谢S.K Setia

  • 即使我在我的流中使用Supplier并在每次我想检索我的strem并对其执行终端操作时使用Supplier.get(),我仍然得到“Stream已经被操作或关闭”异常。有人能看看我的代码并建议我做错了什么吗? 引发异常的方法: 流供应商:

  • 当试图建立我的项目,我得到以下错误: 在我的build.gradle存储库中,我没有jCenter,所以我得到的这个错误来自仍然指向jCenter的依赖项。 Gradle离线模式不是我期望的解决方案。 我知道jCenter已经崩溃了,我们都应该搬到mavenCentral(我已经做到了) 有解决办法吗?