* #### lock
protected [Object](../../java/lang/Object.html "class in java.lang") 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 Detail
* #### Writer
protected Writer()
Creates a new character-stream writer whose critical sections will synchronize on the writer itself.
* #### Writer
protected Writer([Object](../../java/lang/Object.html "class in java.lang") lock)
Creates a new character-stream writer whose critical sections will synchronize on the given object.
Parameters:
`lock` \- Object to synchronize on
Method Detail
* #### write
public void write(int c)
throws [IOException](../../java/io/IOException.html "class in java.io")
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.
Parameters:
`c` \- int specifying a character to be written
Throws:
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
* #### write
public void write(char[] cbuf)
throws [IOException](../../java/io/IOException.html "class in java.io")
Writes an array of characters.
Parameters:
`cbuf` \- Array of characters to be written
Throws:
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
* #### write
public abstract void write(char[] cbuf,
int off,
int len)
throws [IOException](../../java/io/IOException.html "class in java.io")
Writes a portion of an array of characters.
Parameters:
`cbuf` \- Array of characters
`off` \- Offset from which to start writing characters
`len` \- Number of characters to write
Throws:
`[IndexOutOfBoundsException](../../java/lang/IndexOutOfBoundsException.html "class in java.lang")` \- 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
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
* #### write
public void write([String](../../java/lang/String.html "class in java.lang") str)
throws [IOException](../../java/io/IOException.html "class in java.io")
Writes a string.
Parameters:
`str` \- String to be written
Throws:
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
* #### write
public void write([String](../../java/lang/String.html "class in java.lang") str,
int off,
int len)
throws [IOException](../../java/io/IOException.html "class in java.io")
Writes a portion of a string.
Implementation Requirements:
The implementation in this class throws an`IndexOutOfBoundsException` for the indicated conditions; overriding methods may choose to do otherwise.
Parameters:
`str` \- A String
`off` \- Offset from which to start writing characters
`len` \- Number of characters to write
Throws:
`[IndexOutOfBoundsException](../../java/lang/IndexOutOfBoundsException.html "class in java.lang")` \- 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
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
* #### append
public [Writer](../../java/io/Writer.html "class in java.io") append([CharSequence](../../java/lang/CharSequence.html "interface in java.lang") csq)
throws [IOException](../../java/io/IOException.html "class in java.io")
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.
Specified by:
`[append](../../java/lang/Appendable.html#append%28java.lang.CharSequence%29)` in interface `[Appendable](../../java/lang/Appendable.html "interface in java.lang")`
Parameters:
`csq` \- The character sequence to append. If `csq` is`null`, then the four characters `"null"` are appended to this writer.
Returns:
This writer
Throws:
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
Since:
1.5
* #### append
public [Writer](../../java/io/Writer.html "class in java.io") append([CharSequence](../../java/lang/CharSequence.html "interface in java.lang") csq,
int start,
int end)
throws [IOException](../../java/io/IOException.html "class in java.io")
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())
```
Specified by:
`[append](../../java/lang/Appendable.html#append%28java.lang.CharSequence,int,int%29)` in interface `[Appendable](../../java/lang/Appendable.html "interface in java.lang")`
Parameters:
`csq` \- 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"`.
`start` \- The index of the first character in the subsequence
`end` \- The index of the character following the last character in the subsequence
Returns:
This writer
Throws:
`[IndexOutOfBoundsException](../../java/lang/IndexOutOfBoundsException.html "class in java.lang")` \- If `start` or `end` are negative, `start` is greater than `end`, or `end` is greater than`csq.length()`
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
Since:
1.5
* #### append
public [Writer](../../java/io/Writer.html "class in java.io") append(char c)
throws [IOException](../../java/io/IOException.html "class in java.io")
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)
Specified by:
`[append](../../java/lang/Appendable.html#append%28char%29)` in interface `[Appendable](../../java/lang/Appendable.html "interface in java.lang")`
Parameters:
`c` \- The 16-bit character to append
Returns:
This writer
Throws:
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
Since:
1.5
* #### flush
public abstract void flush()
throws [IOException](../../java/io/IOException.html "class in java.io")
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.
Specified by:
`[flush](../../java/io/Flushable.html#flush%28%29)` in interface `[Flushable](../../java/io/Flushable.html "interface in java.io")`
Throws:
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs
* #### close
public abstract void close()
throws [IOException](../../java/io/IOException.html "class in java.io")
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.
Specified by:
`[close](../../java/lang/AutoCloseable.html#close%28%29)` in interface `[AutoCloseable](../../java/lang/AutoCloseable.html "interface in java.lang")`
Specified by:
`[close](../../java/io/Closeable.html#close%28%29)` in interface `[Closeable](../../java/io/Closeable.html "interface in java.io")`
Throws:
`[IOException](../../java/io/IOException.html "class in java.io")` \- If an I/O error occurs