黑马程序员技术交流社区

标题: 关流的顺序 [打印本页]

作者: 胥文    时间: 2013-2-21 18:39
标题: 关流的顺序
io流中有个读取流,和写入流,在操作完之后我们一般都要关流,
我想问下这个读取流和写入流在关的时候有没顺序,为什么?还是都可以啊

作者: 张晋瑜    时间: 2013-2-21 20:02
先打开的后关闭,后打开的先关闭

后果:有可能会导致乱码

你可以看看这个博客:http://www.cnblogs.com/linjiqin/archive/2011/03/23/1992250.html
作者: 黑马-张洋    时间: 2013-2-21 20:44
还是先看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 21:16
黑马-张洋 发表于 2013-2-21 20:44
还是先看API
void close()
          Closes this stream and releases any system resources associated w ...

说的很好
谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2