关闭输入流

时间:2010-06-12 15:23:27

标签: android url

我有以下代码从URL对象中读取:

URL url= new URL("http://datasource.com");     
BufferedReader reader = new BufferedReader(
                                new InputStreamReader(url.openStream()));

在我完成数据后,这是否足以关闭并释放所有的数据:

reader.close();

我没有看到URL关闭它的方法,比如URL.close()......但是想知道我是不是应该做更像这样的事情:

InputStreamReader inputStreamReader = new InputStreamReader(url.openStream());
BufferedReader reader = new BufferedReader(inputStreamReader);
// Do Stuff
inputStreamReader.close();
reader.close();

1 个答案:

答案 0 :(得分:1)

关闭阅读器就足够了 因为Reader / InputStream类是由装饰器模式实现的,所以close操作将传播给decoratee。

BufferedReader中的源,读取器(变量输入)也被关闭:

public void close() throws IOException {
    synchronized (lock) {
        if (!isClosed()) {
            in.close();
            buf = null;
        }
    }
}

InputStreamReader中的源,输入流也被关闭:

@Override
public void close() throws IOException {
    synchronized (lock) {
        // BEGIN android-added
        if (decoder != null) {
            decoder.reset();
        }
        // END android-added
        decoder = null;
        if (in != null) {
            in.close();
            in = null;
        }
    }
}