You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@accumulo.apache.org by David Medinets <da...@gmail.com> on 2012/11/17 06:04:56 UTC

Do Outer Input Streams Need to be Closed?

I've seen a lot of Java code that looks like this example from
org.apache.accumulo.core.client.admin.TableOperationsImpl. Does the
BufferedReader need to be closed or it is automatically closed when
the ZipInputStream is closed?

    ZipInputStream zis = new ZipInputStream(fs.open(path));
    try {
      ZipEntry zipEntry;
      while ((zipEntry = zis.getNextEntry()) != null) {
        if (zipEntry.getName().equals(Constants.EXPORT_TABLE_CONFIG_FILE)) {
          BufferedReader in = new BufferedReader(new InputStreamReader(zis));
          String line;
          while ((line = in.readLine()) != null) {
            String sa[] = line.split("=", 2);
            props.put(sa[0], sa[1]);
          }

          break;
        }
      }
    } finally {
      zis.close();
    }

Re: Do Outer Input Streams Need to be Closed?

Posted by John Vines <vi...@apache.org>.
Not necessary, BufferedReader.close() simply closes the encasing input
stream and nulls out the 2 internal objects for it (the input and the
buffer).


On Sat, Nov 17, 2012 at 12:04 AM, David Medinets
<da...@gmail.com>wrote:

> I've seen a lot of Java code that looks like this example from
> org.apache.accumulo.core.client.admin.TableOperationsImpl. Does the
> BufferedReader need to be closed or it is automatically closed when
> the ZipInputStream is closed?
>
>     ZipInputStream zis = new ZipInputStream(fs.open(path));
>     try {
>       ZipEntry zipEntry;
>       while ((zipEntry = zis.getNextEntry()) != null) {
>         if (zipEntry.getName().equals(Constants.EXPORT_TABLE_CONFIG_FILE))
> {
>           BufferedReader in = new BufferedReader(new
> InputStreamReader(zis));
>           String line;
>           while ((line = in.readLine()) != null) {
>             String sa[] = line.split("=", 2);
>             props.put(sa[0], sa[1]);
>           }
>
>           break;
>         }
>       }
>     } finally {
>       zis.close();
>     }
>