`channel` needs to be closed too. The close MUST also be in a finally block so if an exception is thrown (eg the disk fills up, or there's a read error or permissions problem etc etc) and the transferFrom or second open fails the file handles don't leak. Either:

```
try (ReadableByteChannel channel = blob.openChannel();
      FileChannel dest = FileChannel.open(...)) {

}
```
or
```
ReadableByteChannel channel = blob.openChannel();
try {
  FileChannel dest = FileChannel.open(...);
  try {

  } finally {
    dest.close();
  }
} finally {
  channel.close();
}
```
I generally much prefer the former (Java 7 syntax) as it's both cleaner and less prone to error (eg people adding statements between the open and try).