JavaTM Platform
Standard Ed. 6

java.io
类 Writer

java.lang.Object
  继承者 java.io.Writer
所有已实现的接口:
Closeable, Flushable, Appendable
直接已知子类:
BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

public abstract class Writer
extends Object
implements Appendable, Closeable, Flushable

写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

从以下版本开始:
JDK1.1
另请参见:
Writer, BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, FileWriter, PipedWriter, PrintWriter, StringWriter, Reader

字段摘要
protected  Object lock
          用于同步针对此流的操作的对象。
 
构造方法摘要
protected Writer()
          创建一个新的字符流 writer,其关键部分将同步 writer 自身。
protected Writer(Object lock)
          创建一个新的字符流 writer,其关键部分将同步给定的对象。
 
方法摘要
 Writer append(char c)
          将指定字符添加到此 writer。
 Writer append(CharSequence csq)
          将指定字符序列添加到此 writer。
 Writer append(CharSequence csq, int start, int end)
          将指定字符序列的子序列添加到此 writer.Appendable
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)
          写入字符串的某一部分。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

lock

protected Object lock
用于同步针对此流的操作的对象。为了提高效率,字符流对象可以使用其自身以外的对象来保护关键部分。因此,子类应使用此字段中的对象,而不是 this 或者同步的方法。

构造方法详细信息

Writer

protected Writer()
创建一个新的字符流 writer,其关键部分将同步 writer 自身。


Writer

protected Writer(Object lock)
创建一个新的字符流 writer,其关键部分将同步给定的对象。

参数:
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 - 要写入的字符数
抛出:
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
写入字符串的某一部分。

参数:
str - 字符串
off - 相对初始写入字符的偏移量
len - 要写入的字符数
抛出:
IndexOutOfBoundsException - 如果 offlen 为负,或者 off+len 为负或大于给定字符串的长度
IOException - 如果发生 I/O 错误

append

public Writer append(CharSequence csq)
              throws IOException
将指定字符序列添加到此 writer。

out.append(csq) 的形式调用此方法,行为与以下调用完全相同:

     out.write(csq.toString()) 

可能不添加整个序列,也可能添加,具体取决于字符序列 csqtoString 规范。例如,调用一个字符缓冲区的 toString 方法将返回一个子序列,其内容取决于缓冲区的位置和限制。

指定者:
接口 Appendable 中的 append
参数:
csq - 要添加的字符串序列。如果 csqnull,则向此 writer 添加四个字符 "null"
返回:
此 writer
抛出:
IOException - 如果发生 I/O 错误
从以下版本开始:
1.5

append

public Writer append(CharSequence csq,
                     int start,
                     int end)
              throws IOException
将指定字符序列的子序列添加到此 writer.Appendable

csq 不为 null 时,以 out.append(csq, start, end) 的形式调用此方法,行为与以下调用完全相同:

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

指定者:
接口 Appendable 中的 append
参数:
csq - 要添加子序列的字符序列。如果 csqnull,则添加四个字符 "null",就好像 csq 包含这些字符一样。
start - 子序列中第一个字符的索引
end - 子序列中最后一个字符后面的字符的索引
返回:
此 writer
抛出:
IndexOutOfBoundsException - 如果 startend 为负,而 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) 

指定者:
接口 Appendable 中的 append
参数:
c - 要添加的 16 位字符
返回:
此 writer
抛出:
IOException - 如果发生 I/O 错误
从以下版本开始:
1.5

flush

public abstract void flush()
                    throws IOException
刷新该流的缓冲。如果该流已保存缓冲区中各种 write() 方法的所有字符,则立即将它们写入预期目标。然后,如果该目标是另一个字符或字节流,则将其刷新。因此,一次 flush() 调用将刷新 Writer 和 OutputStream 链中的所有缓冲区。

如果此流的预期目标是由底层操作系统提供的一个抽象(如一个文件),则刷新该流只能保证将以前写入到流的字节传递给操作系统进行写入,但不保证能将这些字节实际写入到物理设备(如磁盘驱动器)。

指定者:
接口 Flushable 中的 flush
抛出:
IOException - 如果发生 I/O 错误

close

public abstract void close()
                    throws IOException
关闭此流,但要先刷新它。在关闭该流之后,再调用 write() 或 flush() 将导致抛出 IOException。关闭以前关闭的流无效。

指定者:
接口 Closeable 中的 close
抛出:
IOException - 如果发生 I/O 错误

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策