org.codehaus.jackson.io

## Class SegmentedStringWriter

- java.lang.Object
- - java.io.Writer
  - - org.codehaus.jackson.io.SegmentedStringWriter

- All Implemented Interfaces:
    Closeable, Flushable, Appendable, AutoCloseable

      public final class SegmentedStringWriter
      extends Writer

  Efficient alternative to `StringWriter`, based on using segmented internal buffer. Initial input buffer is also recyclable.

  This class is most useful when serializing JSON content as a String: if so, instance of this class can be given as the writer to `JsonGenerator`.

  Since:
    1.3

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected TextBuffer` | `_buffer`

    - ### Fields inherited from class java.io.Writer

      `lock`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SegmentedStringWriter(BufferRecycler br)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Writer` | `append(char c)`
    `Writer` | `append(CharSequence csq)`
    `Writer` | `append(CharSequence csq, int start, int end)`
    `void` | `close()`
    `void` | `flush()`
    `String` | `getAndClear()` Main access method that will construct a String that contains all the contents, release all internal buffers we may have, and return result String.
    `void` | `write(char[] cbuf)`
    `void` | `write(char[] cbuf, int off, int len)`
    `void` | `write(int c)`
    `void` | `write(String str)`
    `void` | `write(String str, int off, int len)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _buffer

          protected final TextBuffer _buffer

  - ### Constructor Detail

    - #### SegmentedStringWriter

          public SegmentedStringWriter(BufferRecycler br)

  - ### Method Detail

    - #### append

          public Writer append(char c)

      Specified by:
        `append` in interface `Appendable`
      Overrides:
        `append` in class `Writer`

    - #### append

          public Writer append(CharSequence csq)

      Specified by:
        `append` in interface `Appendable`
      Overrides:
        `append` in class `Writer`

    - #### append

          public Writer append(CharSequence csq,
                      int start,
                      int end)

      Specified by:
        `append` in interface `Appendable`
      Overrides:
        `append` in class `Writer`

    - #### close

          public void close()

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `Writer`

    - #### flush

          public void flush()

      Specified by:
        `flush` in interface `Flushable`
      Specified by:
        `flush` in class `Writer`

    - #### write

          public void write(char[] cbuf)

      Overrides:
        `write` in class `Writer`

    - #### write

          public void write(char[] cbuf,
                   int off,
                   int len)

      Specified by:
        `write` in class `Writer`

    - #### write

          public void write(int c)

      Overrides:
        `write` in class `Writer`

    - #### write

          public void write(String str)

      Overrides:
        `write` in class `Writer`

    - #### write

          public void write(String str,
                   int off,
                   int len)

      Overrides:
        `write` in class `Writer`

    - #### getAndClear

          public String getAndClear()

      Main access method that will construct a String that contains all the contents, release all internal buffers we may have, and return result String. Note that the method is not idempotent -- if called second time, will just return an empty String.