A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胥文 中级黑马   /  2013-2-21 18:39  /  1392 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

io流中有个读取流,和写入流,在操作完之后我们一般都要关流,
我想问下这个读取流和写入流在关的时候有没顺序,为什么?还是都可以啊

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

3 个回复

倒序浏览
先打开的后关闭,后打开的先关闭

后果:有可能会导致乱码

你可以看看这个博客:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html
回复 使用道具 举报
还是先看API
void close()
          Closes this stream and releases any system resources associated with it.
close
void close() throws IOException
Closes this stream and releases any system resources associated with it. If the stream is already closed then invoking this method has no effect.
Throws:
IOException - if an I/O error occurs

关闭该流并释放与之关联的所有资源。在关闭该流后,再调用 read()、ready()、mark()、reset() 或 skip() 将抛出 IOException。关闭以前关闭的流无效。
[html]
public void close() throws IOException {
    synchronized (lock) {
        if (in == null)
        return;
        in.close();
        in = null;
        cb = null;
    }
}
一般情况下是:先打开的后关闭,后打开的先关闭
另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b
例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b
当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法
如果将节点流关闭以后再关闭处理流,会抛出IO异常
回复 使用道具 举报
黑马-张洋 发表于 2013-2-21 20:44
还是先看API
void close()
          Closes this stream and releases any system resources associated w ...

说的很好
谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马