Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Fields](https://developer.android.com/reference/java/io/Writer#lfields) \| [Protected Ctors](https://developer.android.com/reference/java/io/Writer#proctors) \| [Methods](https://developer.android.com/reference/java/io/Writer#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/io/Writer#inhmethods)

# Writer

` public abstract class Writer `   
` extends https://developer.android.com/reference/java/lang/Object ` ` implements https://developer.android.com/reference/java/lang/Appendable, https://developer.android.com/reference/java/io/Closeable, https://developer.android.com/reference/java/io/Flushable `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.io.Writer |

Known direct subclasses [BufferedWriter](https://developer.android.com/reference/java/io/BufferedWriter), [CharArrayWriter](https://developer.android.com/reference/java/io/CharArrayWriter), [FilterWriter](https://developer.android.com/reference/java/io/FilterWriter), [OutputStreamWriter](https://developer.android.com/reference/java/io/OutputStreamWriter), [PipedWriter](https://developer.android.com/reference/java/io/PipedWriter), [PrintWriter](https://developer.android.com/reference/java/io/PrintWriter), [StringWriter](https://developer.android.com/reference/java/io/StringWriter) [BufferedWriter](https://developer.android.com/reference/java/io/BufferedWriter) Writes text to a character-output stream, buffering characters so as to provide for the efficient writing of single characters, arrays, and strings. [CharArrayWriter](https://developer.android.com/reference/java/io/CharArrayWriter) This class implements a character buffer that can be used as an Writer. [FilterWriter](https://developer.android.com/reference/java/io/FilterWriter) Abstract class for writing filtered character streams. [OutputStreamWriter](https://developer.android.com/reference/java/io/OutputStreamWriter) An OutputStreamWriter is a bridge from character streams to byte streams: Characters written to it are encoded into bytes using a specified `https://developer.android.com/reference/java/nio/charset/Charset`. [PipedWriter](https://developer.android.com/reference/java/io/PipedWriter) Piped character-output streams. [PrintWriter](https://developer.android.com/reference/java/io/PrintWriter) Prints formatted representations of objects to a text-output stream. [StringWriter](https://developer.android.com/reference/java/io/StringWriter) A character stream that collects its output in a string buffer, which can then be used to construct a string. Known indirect subclasses [FileWriter](https://developer.android.com/reference/java/io/FileWriter) [FileWriter](https://developer.android.com/reference/java/io/FileWriter) Writes text to character files using a default buffer size.   

*** ** * ** ***

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.
**See also:**

- `https://developer.android.com/reference/java/io/BufferedWriter`
- `https://developer.android.com/reference/java/io/CharArrayWriter`
- `https://developer.android.com/reference/java/io/FilterWriter`
- `https://developer.android.com/reference/java/io/OutputStreamWriter`
- `https://developer.android.com/reference/java/io/FileWriter`
- `https://developer.android.com/reference/java/io/PipedWriter`
- `https://developer.android.com/reference/java/io/PrintWriter`
- `https://developer.android.com/reference/java/io/StringWriter`
- `https://developer.android.com/reference/java/io/Reader`

## Summary

| ### Fields ||
|---|---|
| ` protected https://developer.android.com/reference/java/lang/Object` | `https://developer.android.com/reference/java/io/Writer#lock` The object used to synchronize operations on this stream. |

| ### Protected constructors ||
|---|---|
| ` https://developer.android.com/reference/java/io/Writer#Writer()() ` Creates a new character-stream writer whose critical sections will synchronize on the writer itself. |
| ` https://developer.android.com/reference/java/io/Writer#Writer(java.lang.Object)(https://developer.android.com/reference/java/lang/Object lock) ` Creates a new character-stream writer whose critical sections will synchronize on the given object. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/io/Writer` | ` https://developer.android.com/reference/java/io/Writer#append(char)(char c) ` Appends the specified character to this writer. |
| ` https://developer.android.com/reference/java/io/Writer` | ` https://developer.android.com/reference/java/io/Writer#append(java.lang.CharSequence,%20int,%20int)(https://developer.android.com/reference/java/lang/CharSequence csq, int start, int end) ` Appends a subsequence of the specified character sequence to this writer. |
| ` https://developer.android.com/reference/java/io/Writer` | ` https://developer.android.com/reference/java/io/Writer#append(java.lang.CharSequence)(https://developer.android.com/reference/java/lang/CharSequence csq) ` Appends the specified character sequence to this writer. |
| ` abstract void` | ` https://developer.android.com/reference/java/io/Writer#close()() ` Closes the stream, flushing it first. |
| ` abstract void` | ` https://developer.android.com/reference/java/io/Writer#flush()() ` Flushes the stream. |
| ` static https://developer.android.com/reference/java/io/Writer` | ` https://developer.android.com/reference/java/io/Writer#nullWriter()() ` Returns a new `Writer` which discards all characters. |
| ` void` | ` https://developer.android.com/reference/java/io/Writer#write(java.lang.String)(https://developer.android.com/reference/java/lang/String str) ` Writes a string. |
| ` void` | ` https://developer.android.com/reference/java/io/Writer#write(int)(int c) ` Writes a single character. |
| ` void` | ` https://developer.android.com/reference/java/io/Writer#write(java.lang.String,%20int,%20int)(https://developer.android.com/reference/java/lang/String str, int off, int len) ` Writes a portion of a string. |
| ` abstract void` | ` https://developer.android.com/reference/java/io/Writer#write(char[],%20int,%20int)(char[] cbuf, int off, int len) ` Writes a portion of an array of characters. |
| ` void` | ` https://developer.android.com/reference/java/io/Writer#write(char[])(char[] cbuf) ` Writes an array of characters. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.
From interface ` https://developer.android.com/reference/java/lang/Appendable ` ` abstract https://developer.android.com/reference/java/lang/Appendable` ` https://developer.android.com/reference/java/lang/Appendable#append(char)(char c) `

Appends the specified character to this `Appendable`.
` abstract https://developer.android.com/reference/java/lang/Appendable` ` https://developer.android.com/reference/java/lang/Appendable#append(java.lang.CharSequence,%20int,%20int)(https://developer.android.com/reference/java/lang/CharSequence csq, int start, int end) `

Appends a subsequence of the specified character sequence to this `Appendable`.
` abstract https://developer.android.com/reference/java/lang/Appendable` ` https://developer.android.com/reference/java/lang/Appendable#append(java.lang.CharSequence)(https://developer.android.com/reference/java/lang/CharSequence csq) `

Appends the specified character sequence to this `Appendable`.
From interface ` https://developer.android.com/reference/java/io/Closeable ` ` abstract void` ` https://developer.android.com/reference/java/io/Closeable#close()() `

Closes this stream and releases any system resources associated with it.
From interface ` https://developer.android.com/reference/java/io/Flushable ` ` abstract void` ` https://developer.android.com/reference/java/io/Flushable#flush()() `

Flushes this stream by writing any buffered output to the underlying stream.
From interface ` https://developer.android.com/reference/java/lang/AutoCloseable ` ` abstract void` ` https://developer.android.com/reference/java/lang/AutoCloseable#close()() `

Closes this resource, relinquishing any underlying resources.

## Fields

### lock

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected 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.

<br />

## Protected constructors

### Writer

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected Writer ()
```

Creates a new character-stream writer whose critical sections will synchronize on the writer itself.

<br />

### Writer

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected Writer (Object lock)
```

Creates a new character-stream writer whose critical sections will synchronize on the given object.

<br />

| Parameters ||
|---|---|
| `lock` | `Object`: Object to synchronize on <br /> |

## Public methods

### append

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Writer append (char c)
```

Appends the specified character to this writer.

An invocation of this method of the form `out.append(c)` behaves in exactly the same way as the invocation

```
    out.write(c) 
```

<br />

<br />

| Parameters ||
|---|---|
| `c` | `char`: The 16-bit character to append <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/io/Writer` | This writer <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |

### append

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

Appends a subsequence of the specified character sequence to this writer. `Appendable`.

An invocation of this method of the form `out.append(csq, start, end)` when `csq` is not `null` behaves in exactly the same way as the invocation

    out.write(csq.subSequence(start, end).toString())

<br />

<br />

| Parameters ||
|---|---|
| `csq` | `CharSequence`: The character sequence from which a subsequence will be appended. If `csq` is `null`, then characters will be appended as if `csq` contained the four characters `"null"`. <br /> |
| `start` | `int`: The index of the first character in the subsequence <br /> |
| `end` | `int`: The index of the character following the last character in the subsequence <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/io/Writer` | This writer <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |
| `https://developer.android.com/reference/java/lang/IndexOutOfBoundsException` | If `start` or `end` are negative, `start` is greater than `end`, or `end` is greater than `csq.length()` |

### append

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Writer append (CharSequence csq)
```

Appends the specified character sequence to this writer.

An invocation of this method of the form `out.append(csq)` behaves in exactly the same way as the invocation

```
    out.write(csq.toString()) 
```

Depending on the specification of `toString` for the character sequence `csq`, the entire sequence may not be appended. For instance, invoking the `toString` method of a character buffer will return a subsequence whose content depends upon the buffer's position and limit.

<br />

| Parameters ||
|---|---|
| `csq` | `CharSequence`: The character sequence to append. If `csq` is `null`, then the four characters `"null"` are appended to this writer. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/io/Writer` | This writer <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |

### close

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void close ()
```

Closes the stream, flushing it first. Once the stream has been closed, further write() or flush() invocations will cause an IOException to be thrown. Closing a previously closed stream has no effect.

<br />

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |

### flush

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void flush ()
```

Flushes 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.

If the intended destination of this stream is an abstraction provided by the underlying operating system, for example a file, then flushing the stream guarantees only that bytes previously written to the stream are passed to the operating system for writing; it does not guarantee that they are actually written to a physical device such as a disk drive.

<br />

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |

### nullWriter

Added in [API level 33](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public static Writer nullWriter ()
```

Returns a new `Writer` which discards all characters. The returned stream is initially open. The stream is closed by calling the `close()` method. Subsequent calls to `close()` have no effect.

While the stream is open, the `append(char)`, `append(CharSequence)`, `append(CharSequence, int, int)`, `flush()`, `write(int)`, `write(char[])`, and `write(char[], int, int)` methods do nothing. After the stream has been closed, these methods all throw `IOException`.

The `https://developer.android.com/reference/java/io/Writer#lock` used to synchronize operations on the returned `Writer` is not specified.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/io/Writer` | a `Writer` which discards all characters <br /> |

### write

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void write (String str)
```

Writes a string.

<br />

| Parameters ||
|---|---|
| `str` | `String`: String to be written <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |

### write

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void write (int c)
```

Writes 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.

<br />

| Parameters ||
|---|---|
| `c` | `int`: int specifying a character to be written <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |

### write

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

Writes a portion of a string.

<br />

##### Implementation Requirements:

- The implementation in this class throws an `IndexOutOfBoundsException` for the indicated conditions; overriding methods may choose to do otherwise.

| Parameters ||
|---|---|
| `str` | `String`: A String <br /> |
| `off` | `int`: Offset from which to start writing characters <br /> |
| `len` | `int`: Number of characters to write <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |
| `https://developer.android.com/reference/java/lang/IndexOutOfBoundsException` | Implementations should throw this exception if `off` is negative, or `len` is negative, or `off + len` is negative or greater than the length of the given string |

### write

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

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

Writes a portion of an array of characters.

<br />

| Parameters ||
|---|---|
| `cbuf` | `char`: Array of characters <br /> |
| `off` | `int`: Offset from which to start writing characters <br /> |
| `len` | `int`: Number of characters to write <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |
| `https://developer.android.com/reference/java/lang/IndexOutOfBoundsException` | Implementations should throw this exception if `off` is negative, or `len` is negative, or `off + len` is negative or greater than the length of the given array |

### write

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void write (char[] cbuf)
```

Writes an array of characters.

<br />

| Parameters ||
|---|---|
| `cbuf` | `char`: Array of characters to be written <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |