# Class Writer

java.lang.Object
java.io.Writer

All Implemented Interfaces:
  `java.lang.AutoCloseable`

Direct Known Subclasses:
  `OutputStreamWriter, StringWriter`

public abstract class Writer extends java.lang.Object implements java.lang.AutoCloseable
Abstract class for writing to character streams. The only methods that a subclass must implement are write(char[], int, int), flush(), and close(). Most subclasses, however, will override some of the methods defined here in order to provide higher efficiency, additional functionality, or both. Since: JDK1.1, CLDC 1.0 See Also:OutputStreamWriter, Reader

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected java.lang.Object`
  `lock`
  The object used to synchronize operations on this stream.

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `Writer()`
  Create a new character-stream writer whose critical sections will synchronize on the writer itself.
  `protected`
  `Writer(java.lang.Object lock)`
  Create a new character-stream writer whose critical sections will synchronize on the given object.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `abstract void`
  `close()`
  Close the stream, flushing it first.
  `abstract void`
  `flush()`
  Flush the stream.
  `void`
  `write(char[] cbuf)`
  Write an array of characters.
  `abstract void`
  `write(char[] cbuf, int off, int len)`
  Write a portion of an array of characters.
  `void`
  `write(int c)`
  Write a single character.
  `void`
  `write(java.lang.String str)`
  Write a string.
  `void`
  `write(java.lang.String str, int off, int len)`
  Write a portion of a string.

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

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

- ## Field Details

  - ### lock

    protected java.lang.Object lock
    The object used to synchronize operations on this stream. For efficiency, a character-stream object may use an object other than itself to protect critical sections. A subclass should therefore use the object in this field rather than this or a synchronized method.

- ## Constructor Details

  - ### Writer

    protected Writer()
    Create a new character-stream writer whose critical sections will synchronize on the writer itself.

  - ### Writer

    protected Writer(java.lang.Object lock)
    Create a new character-stream writer whose critical sections will synchronize on the given object. lock - Object to synchronize on.

- ## Method Details

  - ### close

    public abstract void close() throws IOException
    Close the stream, flushing it first. Once a stream has been closed, further write() or flush() invocations will cause an IOException to be thrown. Closing a previously-closed stream, however, has no effect.
    Specified by:
      `close` in interface `java.lang.AutoCloseable`
    Throws:
      `IOException`

  - ### flush

    public abstract void flush() throws IOException
    Flush the stream. If the stream has saved any characters from the various write() methods in a buffer, write them immediately to their intended destination. Then, if that destination is another character or byte stream, flush it. Thus one flush() invocation will flush all the buffers in a chain of Writers and OutputStreams.
    Throws:
      `IOException`

  - ### write

    public void write(char[] cbuf) throws IOException
    Write an array of characters.
    Throws:
      `IOException`

  - ### write

    public abstract void write(char[] cbuf, int off, int len) throws IOException
    Write a portion of an array of characters.
    Throws:
      `IOException`

  - ### write

    public void write(int c) throws IOException
    Write a single character. The character to be written is contained in the 16 low-order bits of the given integer value; the 16 high-order bits are ignored. Subclasses that intend to support efficient single-character output should override this method.
    Throws:
      `IOException`

  - ### write

    public void write(java.lang.String str) throws IOException
    Write a string.
    Throws:
      `IOException`

  - ### write

    public void write(java.lang.String str, int off, int len) throws IOException
    Write a portion of a string.
    Throws:
      `IOException`