一、Reader
Reader 是定义Java 的流式字符输入模式的抽象类。该类的所有方法在出错情况下都将引发IOException 异常
- abstract void close( ) //关闭输入源。进一步的读取将会产生IOException异常
- void mark(int numChars) //在输入流的当前位置设立一个标志。该输入流在numCha个字符被读取之前有效
- boolean markSupported( ) //该流支持mark( )/reset( )则返回true
- int read( ) //如果调用的输入流的下一个字符可读则返回一个整型。遇到文件尾时返回- 1
- int read(char buffer[ ]) //试图读取buffer中的buffer.length个字符,返回实际成功读取的字符数。遇到文件尾返回- 1
- abstract int read(char buffer[ ],int offset, int numChars) //试图读取buffer中从buffer[offset]开始的numChars个字符,返回实际成功读取的字符数。遇到文件尾返回- 1
- boolean ready( ) //如果下一个输入请求不等待则返回true ,否则返回alse
- void reset( ) // 设置输入指针到先前设立的标志处
- long skip(long numChars) // 跳过numChars个输入字符,返回跳过的字符数
二、Writer
Writer 是定义流式字符输出的抽象类。所有该类的方法都返回一个void 值并在出错条件下引发IOException 异常
- abstract void close( ) //关闭输出流。关闭后的写操作会产生IOException异常
- abstract void flush( ) //定制输出状态以使每个缓冲器都被清除。也就是刷新输出缓冲
- void write(int ch) //向输出流写入单个字符。注意参数是一个整型,它允许你不必把参数转换成字符型就可以调用write()
- void write(char buffer[ ]) //向一个输出流写一个完整的字符数组
- abstract void write(char buffer[ ], int offset,int numChars) // 向调用的输出流写入数组buffer 以buffer[offset] 为起点的numChars个字符区域内的内容
- void write(String str) //向调用的输出流写str
- void write(String str, int offset, int numChars) //写数组str 中以制定的offset为起点的长度为numChars个字符区域内的内容
三、FileReader
FileReader类创建了一个可以读取文件内容的Reader 类 ,每一个都能引发一个FileNotFoundException 异常
- FileReader(String filePath)
- FileReader(File fileObj)
例子: 其中BufferReader为缓冲流 后面讲到
- public static void main(String[] args) {
- try {
- FileReader fileReader = new FileReader("D:/t.txt");
- BufferedReader br = new BufferedReader(fileReader);
- String s;
- while ((s = br.readLine()) != null) {
- System.out.println(s);
- }
- br.close();
- fileReader.close();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- // 输出结果
- // ↓↓↓
- // wqerqrqerq
四、FileWriter
FileWriter 创建一个可以写文件的Writer 类
- FileWriter(String filePath)
- //如果append 为true ,输出是附加到文件尾的
- FileWriter(String filePath, boolean append)
- FileWriter(File fileObj)
如果你试图打开一个只读文件,将引发一个IOException异常
- public static void main(String[] args) {
- try {
- FileWriter fw = new FileWriter("D:/tx.txt");
- BufferedWriter br=new BufferedWriter(fw);
- String s = "测试输入";
- br.write(s);
- br.close();
- fw.close();
- fw = new FileWriter("D:/tx.txt",true);
- br=new BufferedWriter(fw);
- s = "二次测试输入";
- br.write(s);
- br.close();
- fw.close();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- // 输出结果
- // ↓↓↓
- // 打开文件tx.txt 测试输入二次测试输入
看到文件内容之后 可以将true改成false 运行下 看看效果
五、CharArrayReader
CharArrayReader 是一个把字符数组作为源的输入流的实现。
- //array是输入源
- CharArrayReader(char array[ ])
- //子集以start 指定的索引开始,长度为numChars
- CharArrayReader(char array[ ], int start, int numChars)
例子:
- public static void main(String[] args) throws IOException {
- String s = "abcdefghijklmnopqrstuvwxyz";
- char[] cs = s.toCharArray();
- CharArrayReader reader = new CharArrayReader(cs);
- CharArrayReader reader2 = new CharArrayReader(cs, 0, 5);
- int c;
- while ((c = reader.read()) != -1) {
- System.out.print((char) c);
- }
- System.out.println();
- while ((c = reader2.read()) != -1) {
- System.out.print((char) c);
- }
- }
- // 输出结果
- // ↓↓↓
- // abcdefghijklmnopqrstuvwxyz
- // abcde
六、CharArrayWriter
CharArrayWriter 实现了以数组作为目标的输出流
- //第一种形式,创建了一个默认长度的缓冲器。第二种形式,缓冲器长度由numChars指定。
- CharArrayWriter( )
- CharArrayWriter(int numChars)
缓冲器保存在CharArrayWriter 的buf 成员中。缓冲器大小在需要的情况下可以自动增长。缓冲器保持的字符数包含在CharArrayWriter 的count 成员中。buf 和count 都是受保护的域。
- public static void main(String[] args) throws IOException {
- CharArrayWriter f = new CharArrayWriter();
- String s = "abcdefghijklmnopqrstuvwxyz";
- char buf[] = s.toCharArray();
- f.write(buf);
- FileWriter fileWriter=new FileWriter("D:/t.txt");
- f.writeTo(fileWriter);
- fileWriter.close();
- f.close();
- }
- // 输出结果
- // ↓↓↓
- //打开文件 内容为 abcdefghijklmnopqrstuvwxyz
七、BufferedReader
BufferedReader 通过缓冲输入提高性能
- BufferedReader(Reader inputStream)
- BufferedReader(Reader inputStream, int bufSize)
八、 BufferedWriter
BufferedWriter是一个增加了flush( ) 方法的Writer,flush( ) 方法可以用来确保数据缓冲器确实被写到实际的输出流。用BufferedWriter 可以通过减小数据被实际的写到输出流的次数而提高程序的性能。
- BufferedWriter(Writer outputStream)
- BufferedWriter(Writer outputStream, int bufSize)
九、PushbackReader
PushbackReader 类允许一个或多个字符被送回输入流
- PushbackReader(Reader inputStream)
- PushbackReader(Reader inputStream, int bufSize)
PushbackReader 提供了unread( ) 方法。该方法返回一个或多个字符到调用的输入流。
- void unread(int ch)
- void unread(char buffer[ ])
- void unread(char buffer[ ], int offset, int numChars)
十、PrintWriter
PrintWriter本质上是PrintStream 的字符形式的版本。
- //flushOnNewline 控制Java 是否在每次输出换行符(\n )时刷新输出流。如果flushOnNewline 为true ,刷新自动发生。若为false ,不进行自动刷新。第一个和第三个构造函数不能自动刷新。
- PrintWriter(OutputStream outputStream)
- PrintWriter(OutputStream outputStream, boolean flushOnNewline)
- PrintWriter(Writer outputStream)
- PrintWriter(Writer outputStream, boolean flushOnNewline)