首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何避免关闭传递给我在Reader流中包装的方法的InputStream?

避免关闭传递给我在Reader流中包装的方法的InputStream,可以通过以下几种方法:

  1. 使用Java 7中引入的try-with-resources语句。
代码语言:java
复制
try (InputStream inputStream = new FileInputStream("file.txt")) {
    Reader reader = new InputStreamReader(inputStream);
    // 使用Reader流进行操作
}
  1. 使用装饰器模式创建一个不关闭的InputStream。
代码语言:java
复制
public class NonClosingInputStream extends FilterInputStream {
    public NonClosingInputStream(InputStream in) {
        super(in);
    }

    @Override
    public void close() throws IOException {
        // 不关闭InputStream
    }
}

使用NonClosingInputStream包装原始InputStream:

代码语言:java
复制
InputStream inputStream = new FileInputStream("file.txt");
NonClosingInputStream nonClosingInputStream = new NonClosingInputStream(inputStream);
Reader reader = new InputStreamReader(nonClosingInputStream);
// 使用Reader流进行操作
  1. 使用Apache Commons IO库中的CloseShieldInputStream。

首先,将Apache Commons IO库添加到项目中。然后:

代码语言:java
复制
InputStream inputStream = new FileInputStream("file.txt");
InputStream closeShieldInputStream = CloseShieldInputStream.wrap(inputStream);
Reader reader = new InputStreamReader(closeShieldInputStream);
// 使用Reader流进行操作
  1. 在finally块中显式地关闭Reader流,而不是InputStream。
代码语言:java
复制
InputStream inputStream = new FileInputStream("file.txt");
Reader reader = new InputStreamReader(inputStream);
try {
    // 使用Reader流进行操作
} finally {
    try {
        reader.close();
    } catch (IOException e) {
        // 处理异常
    }
}

这些方法可以确保在使用Reader流时,不会关闭传递给它的InputStream。

相关搜索:如何避免在使用MVP方法的方法中传递大量参数在PDFBox中关闭PDFParser流的正确方法我们是否需要显式地关闭在方法参数中作为匿名类传递的流或读取器?如何将JSON对象数组结果传递给我的api URL?(在REACT中)在Rx.js中,如何区分触发combineLatest方法的流?如何避免在没有引用传递的情况下在Python中重复工作?在java中,如何将参数传递给Thread中的Start方法?在C#中,如何在方法中实例化传递的泛型类型?我应该如何使用React/redux在我的渲染方法中传递数据如何避免在向mongoose中的查询函数传递无效id后得到"Cast to ObjectId failed for value“?我如何包装一个类,以便它的方法在默认情况下都被传递一个特定的额外参数?在Java中如何将泛型类的对象传递给方法如何将用户在main方法中输入的值传递给C#中的另一个方法?如何将查询结果缓存在类中,然后根据在C#中传递的方法中传递的参数重用它进行搜索?在每个模型的不同DAL类中实现JPA存储库方法时,如何避免重复的代码行/块在Python 中,如何将列表对象传递给期望参数列表的方法?在传递到Django中的实际视图之前,如何将URL路由到通用方法如何使用spring boot在Post方法中传递Json数据?我想传递几个变量,并在不同的java类中使用这些变量。在使用click 2.0时,如何将数组索引传递给v-on: vue.js中的方法?在Java中,如何查看对象的类型是否正确,可以作为方法参数传递?尤其是当类型是原语的时候?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券