Java高级工具类50篇博客:https://blog.csdn.net/libusi001/article/details/100740969
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一、背景
1、现状
IO流对象统一管理,将未关闭的流统一关闭,代码更直观、方便、安全、效率更高。
2、发现
(1)查看InputStream和OutputStream抽象类源代码,发现他们都实现了共同的接口Closeable、Flushable。
(2)后续发现Java中所有流都必须实现Closeable这个接口。
二、IO流关闭工具类代码
import java.io.Closeable;
import java.io.IOException;
/**
* CloseIoUtils
*
* @author libusi
* @date 2019/6/18
*/
public class CloseIoUtils {
/**
* 做一个关闭流接口的形参,里面的参数代表可变参数,不管传进来多少个参数都会放到数组里面
*/
public static void closeAll(Closeable... cs) {
// 遍历数组
if (cs != null) {
for (Closeable c : cs) {
// 只要传进来的不是空的都给它把流关闭
if (c != null) {
try {
c.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
}
三、相关知识点讲解
Java可变参数三个点“...”详解:https://blog.csdn.net/libusi001/article/details/100741920
四、实际应用
//页面下载
this.setResponseHeader(response, fileName2);
OutputStream os = response.getOutputStream();
wb.write(os);
//导出文件服务器备份
String address = excelInfoPath;
MkdirsUtils.mkdir(address);
FileOutputStream stream = new FileOutputStream(new File(address + fileName));
wb.write(stream);
CloseIoUtils.closeAll(stream, os);
有用请点赞,养成良好习惯!
疑问、交流、鼓励请留言!