避免关闭传递给我在Reader流中包装的方法的InputStream,可以通过以下几种方法:
try (InputStream inputStream = new FileInputStream("file.txt")) {
Reader reader = new InputStreamReader(inputStream);
// 使用Reader流进行操作
}
public class NonClosingInputStream extends FilterInputStream {
public NonClosingInputStream(InputStream in) {
super(in);
}
@Override
public void close() throws IOException {
// 不关闭InputStream
}
}
使用NonClosingInputStream包装原始InputStream:
InputStream inputStream = new FileInputStream("file.txt");
NonClosingInputStream nonClosingInputStream = new NonClosingInputStream(inputStream);
Reader reader = new InputStreamReader(nonClosingInputStream);
// 使用Reader流进行操作
首先,将Apache Commons IO库添加到项目中。然后:
InputStream inputStream = new FileInputStream("file.txt");
InputStream closeShieldInputStream = CloseShieldInputStream.wrap(inputStream);
Reader reader = new InputStreamReader(closeShieldInputStream);
// 使用Reader流进行操作
InputStream inputStream = new FileInputStream("file.txt");
Reader reader = new InputStreamReader(inputStream);
try {
// 使用Reader流进行操作
} finally {
try {
reader.close();
} catch (IOException e) {
// 处理异常
}
}
这些方法可以确保在使用Reader流时,不会关闭传递给它的InputStream。
领取专属 10元无门槛券
手把手带您无忧上云