- java.lang.Object
-
- java.io.Writer
-
- 实现的所有接口
-
Closeable
,Flushable
,Appendable
,AutoCloseable
- 已知直接子类:
-
BufferedWriter
,CharArrayWriter
,FilterWriter
,OutputStreamWriter
,PipedWriter
,PrintWriter
,StringWriter
public abstract class Writer extends Object implements Appendable, Closeable, Flushable
用于写入字符流的抽象类。 子类必须实现的唯一方法是write(char [],int,int),flush()和close()。 但是,大多数子类将覆盖此处定义的一些方法,以提供更高的效率,附加功能或两者兼而有之。- 从以下版本开始:
- 1.1
- 另请参见:
-
BufferedWriter
,CharArrayWriter
,FilterWriter
,OutputStreamWriter
,FileWriter
,PipedWriter
,PrintWriter
,StringWriter
,Reader
-
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 Writer
append(char c)
将指定的字符追加到此writer。Writer
append(CharSequence csq)
将指定的字符序列追加到此writer。Writer
append(CharSequence csq, int start, int end)
将指定字符序列的子序列追加到此writer。abstract void
close()
关闭流,先冲洗它。abstract void
flush()
刷新流。static Writer
nullWriter()
返回一个新的Writer
,它丢弃所有字符。void
write(char[] cbuf)
写一个字符数组。abstract void
write(char[] cbuf, int off, int len)
写一个字符数组的一部分。void
write(int c)
写一个字符。void
write(String str)
写一个字符串。void
write(String str, int off, int len)
写一个字符串的一部分。
-
-
-
字段详细信息
-
lock
protected Object lock
用于同步此流上的操作的对象。 为了提高效率,字符流对象可以使用除自身之外的对象来保护关键部分。 因此,子类应使用此字段中的对象而不是this
或同步方法。
-
-
构造方法详细信息
-
Writer
protected Writer()
创建一个新的字符流编写器,其关键部分将在编写器本身上同步。
-
Writer
protected Writer(Object lock)
创建一个新的字符流编写器,其关键部分将在给定对象上同步。- 参数
-
lock
- 要同步的对象
-
-
方法详细信息
-
nullWriter
public static Writer nullWriter()
返回一个新的Writer
,它丢弃所有字符。 返回的流最初是打开的。 通过调用close()
方法关闭流。 对close()
后续调用无效。虽然流是开放的,
append(char)
,append(CharSequence)
,append(CharSequence, int, int)
,flush()
,write(int)
,write(char[])
和write(char[], int, int)
方法什么也不做。 关闭流后,这些方法全部抛出IOException
。该
object
用来对返回的同步操作Writer
未指定。- 结果
-
Writer
丢弃所有字符 - 从以下版本开始:
- 11
-
write
public void write(int c) throws IOException
写一个字符。 要写入的字符包含在给定整数值的16个低位中; 忽略16个高位。打算支持高效单字符输出的子类应该重写此方法。
- 参数
-
c
- 指定要写入的字符的int - 异常
-
IOException
- 如果发生I / O错误
-
write
public void write(char[] cbuf) throws IOException
写一个字符数组。- 参数
-
cbuf
- 要写入的字符数组 - 异常
-
IOException
- 如果发生I / O错误
-
write
public abstract void write(char[] cbuf, int off, int len) throws IOException
写一个字符数组的一部分。- 参数
-
cbuf
- 字符数组 -
off
- 开始编写字符的偏移量 -
len
- 要写入的字符数 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,或len
为负数,或者off + len
为负数或大于给定数组的长度,则实现应抛出此异常 -
IOException
- 如果发生I / O错误
-
write
public void write(String str) throws IOException
写一个字符串。- 参数
-
str
- 要写入的字符串 - 异常
-
IOException
- 如果发生I / O错误
-
write
public void write(String str, int off, int len) throws IOException
写一个字符串的一部分。- 实现要求:
-
此类中的实现会针对指示的条件抛出
IndexOutOfBoundsException
; 重写方法可以选择不这样做。 - 参数
-
str
- 一个字符串 -
off
- 开始写入字符的偏移量 -
len
- 要写入的字符数 - 异常
-
IndexOutOfBoundsException
- 如果off
为负数,或者len
为负数,或者off + len
为负数或大于给定字符串的长度,则实现应抛出此异常 -
IOException
- 如果发生I / O错误
-
append
public Writer append(CharSequence csq) throws IOException
将指定的字符序列追加到此writer。调用
out.append(csq)
形式的此方法的行为与调用的方式完全相同out.write(csq.toString())
取决于规范
toString
字符序列csq
,整个序列可以不追加。 例如,调用字符缓冲区的toString
方法将返回一个子序列,其内容取决于缓冲区的位置和限制。- Specified by:
-
append
在界面Appendable
- 参数
-
csq
- 要追加的字符序列。 如果csq
是null
,则四个字符"null"
将附加到此writer。 - 结果
- 这位作家
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 1.5
-
append
public Writer append(CharSequence csq, int start, int end) throws IOException
将指定字符序列的子序列追加到此writer。Appendable
。形式的这种方法的调用
out.append(csq, start, end)
时csq
不是null
完全相同的方式调用的行为out.write(csq.subSequence(start, end).toString())
- Specified by:
-
append
在界面Appendable
- 参数
-
csq
- 将附加子序列的字符序列。 如果csq
是null
,则将附加字符,就像csq
包含四个字符"null"
。 -
start
- 子序列中第一个字符的索引 -
end
- 子序列中最后一个字符后面的字符的索引 - 结果
- 这位作家
- 异常
-
IndexOutOfBoundsException
- 如果start
或end
为负数,start
大于end
,或end
大于csq.length()
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 1.5
-
append
public Writer append(char c) throws IOException
将指定的字符追加到此writer。调用
out.append(c)
形式的此方法的行为与调用完全相同out.write(c)
- Specified by:
-
append
在界面Appendable
- 参数
-
c
- 要追加的16位字符 - 结果
- 这位作家
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 1.5
-
flush
public abstract void flush() throws IOException
刷新流。 如果流已从缓冲区中的各种write()方法保存任何字符,请立即将它们写入其预期目标。 然后,如果该目标是另一个字符或字节流,请将其刷新。 因此,一次flush()调用将刷新Writers和OutputStreams链中的所有缓冲区。如果该流的预期目的地是由底层操作系统提供的抽象,例如文件,则刷新流仅保证先前写入流的字节被传递到操作系统以进行写入; 它不能保证它们实际上写入物理设备,如磁盘驱动器。
- Specified by:
-
flush
在界面Flushable
- 异常
-
IOException
- 如果发生I / O错误
-
close
public abstract void close() throws IOException
关闭流,先冲洗它。 关闭流后,进一步的write()或flush()调用将导致抛出IOException。 关闭先前关闭的流无效。- Specified by:
-
close
在接口AutoCloseable
- Specified by:
-
close
,界面Closeable
- 异常
-
IOException
- 如果发生I / O错误
-
-