Java IOException - 流已关闭

2023-12-07

I get "IOException:流已关闭”当我运行这个程序时。文本包含许多行数据。程序应该读取每一行,执行必要的功能并将输出写入新文件。我很困惑应该先关闭哪个作家以及在哪里。

import java.net.*; 
import java.io.*;

public class URLReader {
    public static void main(String[] args) throws Exception {
        BufferedReader br = null;
        try {
            // change this value
            FileInputStream fis = new FileInputStream("C:\\Users\\Rao\\Desktop\\test.txt");
            br = new BufferedReader(new InputStreamReader(fis, "UTF-8"));
            String sCurrentLine;
            while ((sCurrentLine = br.readLine()) != null) {
                processLine(sCurrentLine); //error
            }
        } finally {
            if (br != null)
                br.close();
        }
    }

    public static void processLine(String line) throws IOException {
        String prename = line.substring(22);
        int siz= prename.indexOf(":");
        String name = prename.substring(0, siz);

        URL oracle = new URL("http://ip-api.com/json/"+name);
        BufferedReader in = new BufferedReader(new InputStreamReader(oracle.openStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) // error
            // System.out.println(inputLine);
            in.close();  
        String baby = (line + "\t" + inputLine); 

        try {
            FileWriter writer = new FileWriter("C:\\Users\\Rao\\Desktop\\output.txt", true);
            writer.write(baby);
            writer.write("\r\n");   // write new line
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

例外情况如下:

Exception in thread "main" java.io.IOException: Stream closed
    at java.io.BufferedReader.ensureOpen(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at URLReader.processLine(URLReader.java:31)
    at URLReader.main(URLReader.java:13)

您关闭循环中的输入流:

while ((inputLine = in.readLine()) != null) // error

               // System.out.println(inputLine);
in.close();  

您应该关闭循环外部的流:

while ((inputLine = in.readLine()) != null) // error
{
   //dosomething
   // System.out.println(inputLine);
}
in.close();  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java IOException - 流已关闭 的相关文章

随机推荐

  • IE 8 支持 JSON.stringify() 吗?

    我需要使用 JSON stringify Chrome Safari 和 Firefox 应该支持 我认为IE8也支持JSON对象 我认为 IE7 和 6 没有 所以我这样做 所以 我认为只有 IE6 和 7 才会导入外部 JavaScri
  • Mercurial自动更新问题

    我们开始使用 Mercurial 进行源代码控制 我们已将 HGRC 配置文件配置为在推送到 中央 存储库后自动更新 对于某些 PC 我们会收到以下错误消息 warning changegroup hook exited with stat
  • Magento 自定义模块,致命错误:调用成员函数 setFormAction()

    当我点击这个 url 上的模块时http localhost xxx index php TradeEnquiry我收到这个错误 致命错误 调用成员函数 setFormAction 对非对象进行 C wamp www stockdispla
  • 从 CSV Import 更新现有的 Access 记录,原生于 MS Access 或 VB.NET

    我是我所在组织的票务系统的应用程序管理员 我们正在添加一个新客户 需要将他们的客户记录导入到我们的系统中 然而 我们被拒绝从直接数据库连接中简单地获取这些记录 我们仅限于进入他们的票务系统 并将现有记录导出到 CSV 文件 为了在我们的系统
  • 如何(准确)估计剩余下载时间?

    当然 您可以将剩余文件大小除以当前下载速度 但如果您的下载速度波动 而且它会波动 这不会产生非常好的结果 有什么更好的算法可以产生更平滑的倒计时 An 指数移动平均线非常适合这个 它提供了一种平滑平均值的方法 以便每次添加新样本时 旧样本对
  • Java 8 原始流到集合的映射方法

    这两种流创建方法之间是否存在显着差异 在性能或最佳实践方面 int arr2 1 2 3 4 5 6 Arrays stream arr2 map in gt in 2 mapToObj in gt new Integer in colle
  • “原始字符串正则表达式”到底是什么以及如何使用它?

    来自 python 文档regex 关于 特点 解决方案是使用 Python 的原始字符串表示法来表示正则 表达模式 反斜杠不会以任何特殊方式处理 前缀为的字符串文字 r So r n 是一个两个字符的字符串 含有 and n while
  • p:graphicImage 的替代方案,它可以显示来自 byte[] 的图像并控制浏览器缓存

    似乎有一个错误p graphicimage使用更新功能时 通过加载一张图像value myController myStreamedContent 有效 但是当改变时myController myStreamedContent随后更新p g
  • CUDA 可以解决许多“小型/中型”线性系统

    关于我尝试使用 CUDA 加速的问题的一些背景信息 我有大量小型 中型相同尺寸的线性系统需要独立求解 每个线性系统都是方形的 实数的 稠密的 可逆的和非对称的 这些实际上是矩阵系统 因此每个系统看起来都像 AX B 其中 A X 和 B 是
  • 浏览器后退按钮不会清除旧的后备 bean 值

    我们使用 JSF2 我们有一个带有表单字段的页面 其中命令按钮链接到支持 bean 当我们访问表单页面 输入值并提交时 支持 bean 会收到正确的值并将其带到下一页 如果我按浏览器中的后退按钮 它将转到带有表单的上一页 如果我在表单中输入
  • 如何实现通用的max函数?

    我知道这是因为模板函数的返回类型与第一个参数 T 的返回类型相同 如何修改此模板 使其在所有情况下都能正确运行 include
  • EventEmitter类的清晰概念

    代码写入子组件 mycomponent ts import Component OnInit EventEmitter Output from angular core Component selector app mycomponent
  • 将 shell 变量传递给 JSON 请求以进行curl?

    让我们看下面的例子 curl i X POST H Content Type application json d jsonrpc 2 0 method Player Open params item false http example
  • 排序多维数组javascript

    我想对双精度的多维数组进行排序 该数组如下所示 1 2 2 3 5 6 8 9 我想按 X 值对其进行排序 并保持 x y 值配对 我在网站上搜索了多维排序 发现了类似的帖子these其中排序函数修改如下 location sort fun
  • 如何检查字符串是否可以转换为浮点数?

    首先 我的背景是需要将浮点文字 字符串 转换为浮点 双精度值的编译器编写者 过去 15 年我没有做过任何浮点编程 所以我很确定这是一个完全愚蠢的新手问题 double res errno 0 res strtod const char li
  • 如何设置TabHost背景颜色

    我需要帮助 我发现在 TabHost 中更改背景颜色很困难 原图 我需要修改背景颜色 如下图所示 我也在我的代码和 XML 中尝试了很多东西 但都失败了 我的代码如下 TabHost tabHost getTabHost Tab 1 Tab
  • 如何在C++中设置文件权限(跨平台)?

    我正在使用 C ofstream写出一个文件 我想将权限设置为只能由用户访问 700 在unix中 我想我可以发出一个system chmod 700 file txt 但我需要这段代码也能在 Windows 上运行 我可以使用一些Wind
  • 如何使用Robot Framework处理提示框?

    我使用 Robot Framework 和 Selenium2Library 进行网站测试自动化 在其中一种情况下 会出现一个提示框 类似于警报的弹出窗口 但其中有一个输入字段 请参阅例子在这里 要求一些文字 问题是 Robot Frame
  • FileSystemWatcher Changed 事件引发两次

    我有一个应用程序 我正在寻找一个文本文件 如果对该文件进行了任何更改 我正在使用OnChanged事件处理程序来处理事件 我正在使用NotifyFilters LastWriteTime但该事件仍然被解雇两次 这是代码 public voi
  • Java IOException - 流已关闭

    I get IOException 流已关闭 当我运行这个程序时 文本包含许多行数据 程序应该读取每一行 执行必要的功能并将输出写入新文件 我很困惑应该先关闭哪个作家以及在哪里 import java net import java io