一、Reader
Reader的抽象父类在java.io.Reader中
public abstract class Reader extends Object implements Readable, Closeable
Readable接口实现read方法,read方法一次读取一个字符
Closeable接口实现close方法
1.1 BufferedReader
提供了通用的缓冲方式文本读取,另外还提供readline方法,最基本构造函数为:
BufferedReader(Reader in)
例如:
BufferedReader in = new BufferedReader(new FileReader("foo.in"));
因为其拥有readline方法,可以套在其他字符输入流外面,方便使用
1.2 InputStreamReader
为字节流转换为字符流提供桥梁。把一个字节流以字符流的方式读入时用到这个,最基本构造方法:
InputStreamReader(InputStream in)
例如
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
1.2.1 FileReader
作为InputStreamReader的子类,基本构造函数:
File(String pathname)
例子可参考1.1 BufferedReader
1.3 StringReader
构造函数参数是String:
StringReader(String s)
其拥有int read(char[] cbuf, int off, int len) ,其中cbuf表示目标缓冲区,off表示从源String的第off个字符开始读取,len表示读取的字符长度
1.4 PipedReader
创建管道字符流读取,构造函数为:
PipedReader()
构造之后不能直接使用,需要把PipedReader和PipedWriter绑定起来,在Writer写数据,在Read才能读数据:
connect(PipedWriter src)
1.5 CharArrayReader
与StringReader类似,不过构造函数的参数是char数组,其他都类似:
CharArrayReader(char[] buf)
二、Writer
Writer的write方法可以有以下形式:
write(char[] cbuf)
write(char[] cbuf, int off, int len)
write(int c)
write(String str)
write(String str, int off, int len)
还有append方法,与使用write方法效果相同
flush()方法可以缓冲区中的内容强制写出去
2.1 BufferedWriter
通过缓冲进行字符流写入,基本构造函数为:
BufferedWriter(Writer out)
例如:
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
该类有newline函数,可以插入一个换行符,因为不是所有操作系统换行符都是\n
2.2 OutputStreamWriter
把字符流变成字节流输出,与InputStreamReader作用相反,基本构造函数:
OutputStreamWriter(OutputStream out)
例如:
Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
2.2.1 FileWriter
继承OutputStreamWriter,与FileReader类似,用于文件的写入,基本构造函数为:
FileWriter(File file)
2.3 StringWriter
把内容写入String缓冲中,基本构造函数为:
StringWriter()
可以使用write方法后,通过system.out.print方法和writer.toString把writer中的内容输出
2.4 PipedWriter
和PipedReader成对使用,基本构造函数为:
PipedWriter()
writer或reader其中一方使用connect进行绑定即可
2.5 CharArrayWriter
与StringWriter类似,基本构造方法:
CharArrayWriter()
可以使用toCharArray() 返回char[],也可以用toString()返回一个String