数据源与writer的结合
字符数组 | CharArrayWriter (java.io) |
String | StringWriter (java.io) |
文件 | FileWriter (java.io) |
管道 | PipedWriter (java.io) |
CharArrayWriter | 实现一个可用作 Writer 的字符缓冲区 缓冲区会随向流中写入数据而自动增长 可使用 toCharArray() 和 toString() 获取数据。 在此类上调用 close() 无效 并且在关闭该流后可以调用此类中的各个方法,而不会产生任何 IOException | CharArrayWriter() CharArrayWriter(int initialSize) 内部包含char buf[] size为大小 构造方法用来初始化缓冲区 |
StringWriter | 将输出收集到一个字符缓冲区 StringBuffer的字符流,可以用来构造字符串 关闭 StringWriter 无效 此类中的方法在关闭该流后仍可被调用,而不会产生任何 IOException | StringWriter() StringWriter(int initialSize) 构造方法初始化缓冲区 |
FileWriter | 用来写入字符文件的便捷类 类似FileReader继承自InputStreamReader 他继承自OutputStreamWriter | FileWriter(String fileName) FileWriter(String fileName, boolean append) FileWriter(File file) FileWriter(File file, boolean append) FileWriter(FileDescriptor fd) 构造方法都是用来设置文件 |
PipedWriter | 管道字符流 | PipedWriter(PipedReader snk) PipedWriter() |
转换流
OutputStreamWriter | 类似InputStreamReader 作为转换器使用 OutputStreamWriter 是字符流通向字节流的桥梁 可使用指定的 charset 将要写入流中的字符编码成字节 使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集 每次调用 write() 方法都会导致在给定字符(或字符集)上调用编码转换器 为了获得最高效率,可考虑将 OutputStreamWriter 包装到 BufferedWriter 中 例如: Writer out = new BufferedWriter(new OutputStreamWriter(System.out)); | OutputStreamWriter(OutputStream out, String charsetName) OutputStreamWriter(OutputStream out) OutputStreamWriter(OutputStream out, Charset cs) OutputStreamWriter(OutputStream out, CharsetEncoder enc) 获取OutputStream然后进行转换,或者指定具体的字符编码 |
FilterWriter | 类似其他的Filter类,作为装饰器模式的Decoder角色 以便具体的装饰器角色可以使用 |
BufferedWriter 以及 PrintWriter类似Reader 不同于字节流的装饰器模式应用
他们都自成一个模式的应用
他俩都单独是Writer 也都包含一个Writer
Writer下完整的家谱