- java.lang.Object
-
- java.io.Writer
-
- All Implemented Interfaces:
-
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
-
-
方法摘要
所有方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 Writer
append(char c)
将指定的字符附加到此作者。Writer
append(CharSequence csq)
将指定的字符序列附加到此作者。Writer
append(CharSequence csq, int start, int end)
将指定字符序列的子序列附加到此作者。abstract void
close()
关闭流,先刷新。abstract void
flush()
刷新流。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
- 要同步的对象
-
-
方法详细信息
-
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
为负数或大于给定数组的长度,IndexOutOfBoundsException
执行此异常 -
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
为指定的条件抛出一个IndexOutOfBoundsException
; 压倒一切的方法可能会选择其他方式。 - 参数
-
str
- 一个字符串 -
off
- 开始写入字符的偏移量 -
len
- 要写入的字符数 - 异常
-
IndexOutOfBoundsException
- 如果off
为负,或者len
为负,则实现应抛出此异常,或off + len
为负或大于给定字符串的长度 -
IOException
- 如果发生I / O错误
-
append
public Writer append(CharSequence csq) throws IOException
将指定的字符序列附加到此作者。这种
out.append(csq)
形式的方法的调用与调用的方式完全相同out.write(csq.toString())
取决于规范
toString
字符序列csq
,整个序列可以不追加。 例如,调用字符缓冲区的toString
方法将返回一个子序列,其内容取决于缓冲区的位置和限制。- Specified by:
-
append
在接口Appendable
- 参数
-
csq
- 要追加的字符序列。 如果csq
是null
,则这个写入器附加四个字符"null"
。 - 结果
- 这位作家
- 异常
-
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 1.5
-
append
public Writer append(CharSequence csq, int start, int end) throws IOException
将指定字符序列的子序列附加到此作者。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
将指定的字符附加到此作者。调用此方法的形式为
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错误
-
-