当前位置:  开发笔记 > 编程语言 > 正文

如果它们通过java包装在缓冲区中,我是否必须明确关闭所有流?

如何解决《如果它们通过java包装在缓冲区中,我是否必须明确关闭所有流?》经验,为你挑选了2个好方法。

如果任何读取器或流装饰另一个读取器/流,则关闭外部读取器/流也会关闭内部.这可以从Javadoc暗示Closeable#close():

关闭此流并释放与其关联的所有系统资源.

这也适用于底层资源.

如果你非常好奇,你可以深入研究这些课程的来源,例如.在BufferedReader:

public void close() throws IOException {
    synchronized (lock) {
        if (in == null)
            return;
        try {
            in.close();
        } finally {
            in = null;
            cb = null;
        }
    }
}

in底层在哪里Reader.



1> Adam Michali..:

如果任何读取器或流装饰另一个读取器/流,则关闭外部读取器/流也会关闭内部.这可以从Javadoc暗示Closeable#close():

关闭此流并释放与其关联的所有系统资源.

这也适用于底层资源.

如果你非常好奇,你可以深入研究这些课程的来源,例如.在BufferedReader:

public void close() throws IOException {
    synchronized (lock) {
        if (in == null)
            return;
        try {
            in.close();
        } finally {
            in = null;
            cb = null;
        }
    }
}

in底层在哪里Reader.



2> andrucz..:

是的,装饰的溪流也是封闭的.

InputStream in = new FileInputStream("c:\\myfile.txt");
InputStreamReader reader = new InputStreamReader(in);
BufferedReader bufferedReader = new BufferedReader(reader);

bufferedReader.close();

in.read(); // throws an IOException (no such file or directory)
reader.read(); // throws an IOException (Stream closed)

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有