Class UTF8Writer

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.Appendable, java.lang.AutoCloseable, UnicodeWriter

    public final class UTF8Writer
    extends java.io.Writer
    implements UnicodeWriter
    Specialized buffering UTF-8 writer. The main reason for custom version is to allow for efficient buffer recycling; the second benefit is that encoder has less overhead for short content encoding (compared to JDK default codecs).
    • Field Summary

      • Fields inherited from class java.io.Writer

        lock
    • Constructor Summary

      Constructors 
      Constructor Description
      UTF8Writer​(java.io.OutputStream out)  
      UTF8Writer​(java.io.OutputStream out, int bufferLength)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Complete the writing of characters to the result.
      void flush()
      Flush the contents of any buffers.
      void write​(char[] cbuf)  
      void write​(char[] cbuf, int off, int len)  
      void write​(int c)
      Write a single char.
      void write​(java.lang.String str)
      Process a supplied string
      void write​(java.lang.String str, int off, int len)  
      void write​(UnicodeString chars)
      Process a supplied string
      void writeAscii​(byte[] content)
      Write a sequence of ASCII characters.
      void writeAscii​(byte[] chars, int off, int len)
      Write a sequence of ASCII characters.
      void writeCodePoint​(int codepoint)
      Process a single character.
      void writeLatin1​(byte[] bytes, int off, int len)  
      void writeRepeatedAscii​(byte ch, int repeat)
      Write an ASCII character repeatedly.
      • Methods inherited from class java.io.Writer

        append, append, append, nullWriter
      • Methods inherited from class java.lang.Object

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

      • UTF8Writer

        public UTF8Writer​(java.io.OutputStream out)
      • UTF8Writer

        public UTF8Writer​(java.io.OutputStream out,
                          int bufferLength)
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Description copied from interface: UnicodeWriter
        Complete the writing of characters to the result. The default implementation does nothing.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface UnicodeWriter
        Specified by:
        close in class java.io.Writer
        Throws:
        java.io.IOException - if processing fails for any reason
      • flush

        public void flush()
                   throws java.io.IOException
        Description copied from interface: UnicodeWriter
        Flush the contents of any buffers. The default implementation does nothing.
        Specified by:
        flush in interface java.io.Flushable
        Specified by:
        flush in interface UnicodeWriter
        Specified by:
        flush in class java.io.Writer
        Throws:
        java.io.IOException - if processing fails for any reason
      • write

        public void write​(char[] cbuf)
                   throws java.io.IOException
        Overrides:
        write in class java.io.Writer
        Throws:
        java.io.IOException
      • write

        public void write​(char[] cbuf,
                          int off,
                          int len)
                   throws java.io.IOException
        Specified by:
        write in class java.io.Writer
        Throws:
        java.io.IOException
      • writeLatin1

        public void writeLatin1​(byte[] bytes,
                                int off,
                                int len)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • writeAscii

        public void writeAscii​(byte[] content)
                        throws java.io.IOException
        Write a sequence of ASCII characters. The caller is responsible for ensuring that each byte represents a character in the range 1-127
        Specified by:
        writeAscii in interface UnicodeWriter
        Parameters:
        content - the content to be written
        Throws:
        java.io.IOException - if processing fails for any reason
      • writeAscii

        public void writeAscii​(byte[] chars,
                               int off,
                               int len)
                        throws java.io.IOException
        Write a sequence of ASCII characters. The caller is responsible for ensuring that each byte represents a character in the range 1-127
        Parameters:
        chars - the characters to be written
        off - the offset of the first character to be included
        len - the number of characters to be written
        Throws:
        java.io.IOException
      • writeRepeatedAscii

        public void writeRepeatedAscii​(byte ch,
                                       int repeat)
                                throws java.io.IOException
        Write an ASCII character repeatedly. Used for serializing whitespace.
        Specified by:
        writeRepeatedAscii in interface UnicodeWriter
        Parameters:
        ch - the ASCII character to be serialized (must be less than 0x7f)
        repeat - the number of occurrences to output
        Throws:
        java.io.IOException - if it fails
      • writeCodePoint

        public void writeCodePoint​(int codepoint)
                            throws java.io.IOException
        Process a single character. Default implementation wraps the codepoint into a single-character UnicodeString
        Specified by:
        writeCodePoint in interface UnicodeWriter
        Parameters:
        codepoint - the character to be processed. Must not be a surrogate
        Throws:
        java.io.IOException - if processing fails for any reason
      • write

        public void write​(int c)
                   throws java.io.IOException
        Write a single char.

        Note (MHK) Although the Writer interface says that the top half of the int is ignored, this implementation appears to accept a Unicode codepoint which is output as a 4-byte UTF-8 sequence.

        Overrides:
        write in class java.io.Writer
        Parameters:
        c - the char to be written
        Throws:
        java.io.IOException - If an I/O error occurs
      • write

        public void write​(UnicodeString chars)
                   throws java.io.IOException
        Process a supplied string
        Specified by:
        write in interface UnicodeWriter
        Parameters:
        chars - the characters to be processed
        Throws:
        java.io.IOException - if processing fails for any reason
      • write

        public void write​(java.lang.String str)
                   throws java.io.IOException
        Description copied from interface: UnicodeWriter
        Process a supplied string
        Specified by:
        write in interface UnicodeWriter
        Overrides:
        write in class java.io.Writer
        Parameters:
        str - the characters to be processed
        Throws:
        java.io.IOException - if processing fails for any reason
      • write

        public void write​(java.lang.String str,
                          int off,
                          int len)
                   throws java.io.IOException
        Overrides:
        write in class java.io.Writer
        Throws:
        java.io.IOException