android/guava/src/com/google/common/io/ByteSink.java
@CanIgnoreReturnValue
  public long writeFrom(InputStream input) throws IOException {
    checkNotNull(input);

    Closer closer = Closer.create();
    try {
      OutputStream out = closer.register(openStream());
      long written = ByteStreams.copy(input, out);
      out.flush(); // https://code.google.com/p/guava-libraries/issues/detail?id=1330
      return written;
    } catch (Throwable e) {
      throw closer.rethrow(e);
    } finally {
      closer.close();
    }
  }
@CanIgnoreReturnValue
  public long writeFrom(InputStream input) throws IOException {
    checkNotNull(input);

    Closer closer = Closer.create();
    try {
      OutputStream out = closer.register(openStream());
      long written = ByteStreams.copy(input, out);
      out.flush(); // https://code.google.com/p/guava-libraries/issues/detail?id=1330
      return written;
    } catch (Throwable e) {
      throw closer.rethrow(e);
    } finally {
      closer.close();
    }
  }
@ CanIgnoreReturnValue public long writeFrom ( InputStream input ) throws IOException { checkNotNull ( input ) ; Closer closer = Closer . create ( ) ; try { OutputStream out = closer . register ( openStream ( ) ) ; long written = ByteStreams . copy ( input , out ) ; out . flush ( ) ; // https://code.google.com/p/guava-libraries/issues/detail?id=1330 return written ; } catch ( Throwable e ) { throw closer . rethrow ( e ) ; } finally { closer . close ( ) ; } }
Writes all the bytes from the given {@code InputStream} to this sink. Does not close {@code
input}.

@return the number of bytes written
@throws IOException if an I/O occurs while reading from {@code input} or writing to this sink
Writes all the bytes from the given { @code InputStream } to this sink . Does not close { @code input } .