java的节点流和处理流的关闭顺序

1、流关闭的顺序

(1)流之间没有依赖关系:先打开的后关闭,后打开的先关闭;
(2)流之间存在依赖关系:如果流a依赖流b,那么应该先关闭流a,再关闭流b。例如:处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b。
(3)可以只关闭处理流,不用关闭节点流,因为处理流关闭的时候,会调用节点流的关闭方法。
注意:
1、如果先关闭节点流,再关闭处理流,会抛出IO异常;
2、如果关闭了处理流,再关闭节点流,需要先做判断;

FileOutputStream fos = new FileOutputStream(zipFileName);
        ZipOutputStream zipOutput = new ZipOutputStream(fos);
           //先关闭处理流
			zipOutput.close();
			//对节点流进行判断,不为空,再关闭
            if (fos != null) {
                try {
                    fos.close();
                } catch (Exception e) {
                    logger.error("error", e);
                }
            }

2、流的概念

(1)节点流:可以从或向一个指定的地方读写数据,如FileReader;
(2)处理流:是对一个节点流的封装,通过封装的方法调用节点流功能进行读取数据。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。

3、常用的节点流

(1)FileInputStream FileOutputStream FileReader FileWriter 文件处理的流;

(2)StringReader StringWriter 对字符串进行处理的流;

(3)ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter 对数组处理的流;

(4)PipedInputStream PipedOutputStream PipedReader PipedWriter 对管道进行处理的流

4、常用的处理流

(1)缓冲流 BufferedInputStream BufferdOutputStream BufferReader BufferedWriter ----增加缓冲功能,避免频繁读写硬盘;

(2)转换流 InputStreamReader OutputStreamReader -----实现字节流和字符流之间的转换;

(3)DataInputStream DataOutputStream ------ 将基础数据类型写入到文件中,或者从文件中读出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值