Class ByteSink


  • @GwtIncompatible
    public abstract class ByteSink
    extends java.lang.Object
    A destination to which bytes can be written, such as a file. Unlike an OutputStream, a ByteSink is not an open, stateful stream that can be written to and closed. Instead, it is an immutable supplier of OutputStream instances.

    ByteSink provides two kinds of methods:

    • Methods that return a stream: These methods should return a new, independent instance each time they are called. The caller is responsible for ensuring that the returned stream is closed.
    • Convenience methods: These are implementations of common operations that are typically implemented by opening a stream using one of the methods in the first category, doing something and finally closing the stream or channel that was opened.
    Since:
    14.0
    Author:
    Colin Decker
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ByteSink()
      Constructor for use by subclasses.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      CharSink asCharSink​(java.nio.charset.Charset charset)
      Returns a CharSink view of this ByteSink that writes characters to this sink as bytes encoded with the given charset.
      java.io.OutputStream openBufferedStream()
      Opens a new buffered OutputStream for writing to this sink.
      abstract java.io.OutputStream openStream()
      Opens a new OutputStream for writing to this sink.
      void write​(byte[] bytes)
      Writes all the given bytes to this sink.
      long writeFrom​(java.io.InputStream input)
      Writes all the bytes from the given InputStream to this sink.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ByteSink

        protected ByteSink()
        Constructor for use by subclasses.
    • Method Detail

      • asCharSink

        public CharSink asCharSink​(java.nio.charset.Charset charset)
        Returns a CharSink view of this ByteSink that writes characters to this sink as bytes encoded with the given charset.
      • openStream

        public abstract java.io.OutputStream openStream()
                                                 throws java.io.IOException
        Opens a new OutputStream for writing to this sink. This method returns a new, independent stream each time it is called.

        The caller is responsible for ensuring that the returned stream is closed.

        Throws:
        java.io.IOException - if an I/O error occurs while opening the stream
      • openBufferedStream

        public java.io.OutputStream openBufferedStream()
                                                throws java.io.IOException
        Opens a new buffered OutputStream for writing to this sink. The returned stream is not required to be a BufferedOutputStream in order to allow implementations to simply delegate to openStream() when the stream returned by that method does not benefit from additional buffering (for example, a ByteArrayOutputStream). This method returns a new, independent stream each time it is called.

        The caller is responsible for ensuring that the returned stream is closed.

        Throws:
        java.io.IOException - if an I/O error occurs while opening the stream
        Since:
        15.0 (in 14.0 with return type BufferedOutputStream)
      • write

        public void write​(byte[] bytes)
                   throws java.io.IOException
        Writes all the given bytes to this sink.
        Throws:
        java.io.IOException - if an I/O occurs while writing to this sink
      • writeFrom

        @CanIgnoreReturnValue
        public long writeFrom​(java.io.InputStream input)
                       throws java.io.IOException
        Writes all the bytes from the given InputStream to this sink. Does not close input.
        Returns:
        the number of bytes written
        Throws:
        java.io.IOException - if an I/O occurs while reading from input or writing to this sink