一、Reader

Reader 是定义Java 的流式字符输入模式的抽象类。该类的所有方法在出错情况下都将引发IOException  异常

   
   
   
   
  1. abstract void close( )  //关闭输入源。进一步的读取将会产生IOException异常   
  2. void mark(int numChars)  //在输入流的当前位置设立一个标志。该输入流在numCha个字符被读取之前有效   
  3. boolean markSupported( )  //该流支持mark( )/reset( )则返回true   
  4. int read( )  //如果调用的输入流的下一个字符可读则返回一个整型。遇到文件尾时返回- 1   
  5. int read(char buffer[ ])  //试图读取buffer中的buffer.length个字符,返回实际成功读取的字符数。遇到文件尾返回- 1   
  6. abstract int read(char buffer[ ],int offset,  int numChars) //试图读取buffer中从buffer[offset]开始的numChars个字符,返回实际成功读取的字符数。遇到文件尾返回- 1   
  7. boolean ready( )  //如果下一个输入请求不等待则返回true ,否则返回alse   
  8. void reset( ) // 设置输入指针到先前设立的标志处   
  9. long skip(long numChars) // 跳过numChars个输入字符,返回跳过的字符数 

 


二、Writer

Writer  是定义流式字符输出的抽象类。所有该类的方法都返回一个void 值并在出错条件下引发IOException  异常

   
   
   
   
  1. abstract void close( )  //关闭输出流。关闭后的写操作会产生IOException异常  
  2.         abstract void flush( )  //定制输出状态以使每个缓冲器都被清除。也就是刷新输出缓冲  
  3.         void write(int ch)  //向输出流写入单个字符。注意参数是一个整型,它允许你不必把参数转换成字符型就可以调用write()  
  4.         void write(char buffer[ ])  //向一个输出流写一个完整的字符数组  
  5.         abstract void write(char buffer[ ], int offset,int numChars) //         向调用的输出流写入数组buffer 以buffer[offset] 为起点的numChars个字符区域内的内容  
  6.         void write(String str)  //向调用的输出流写str  
  7.         void write(String str, int offset,  int numChars)   //写数组str 中以制定的offset为起点的长度为numChars个字符区域内的内容 

 


三、FileReader

FileReader类创建了一个可以读取文件内容的Reader 类 ,每一个都能引发一个FileNotFoundException 异常

   
   
   
   
  1. FileReader(String filePath)  
  2. FileReader(File fileObj)  

例子: 其中BufferReader为缓冲流 后面讲到

   
   
   
   
  1. public static void main(String[] args) { 
  2.     try { 
  3.         FileReader fileReader = new FileReader("D:/t.txt"); 
  4.         BufferedReader br = new BufferedReader(fileReader); 
  5.         String s; 
  6.         while ((s = br.readLine()) != null) { 
  7.             System.out.println(s); 
  8.         } 
  9. br.close();
  10. fileReader.close();
  11.     } catch (FileNotFoundException e) { 
  12.         // TODO Auto-generated catch block 
  13.         e.printStackTrace(); 
  14.     } catch (IOException e) { 
  15.         // TODO Auto-generated catch block 
  16.         e.printStackTrace(); 
  17.     } 
  18.  
  19. // 输出结果 
  20. // ↓↓↓ 
  21.  
  22. // wqerqrqerq 

 


四、FileWriter

FileWriter  创建一个可以写文件的Writer  类

   
   
   
   
  1. FileWriter(String filePath)  
  2. //如果append 为true ,输出是附加到文件尾的 
  3. FileWriter(String filePath, boolean append)  
  4. FileWriter(File fileObj) 

如果你试图打开一个只读文件,将引发一个IOException异常

   
   
   
   
  1. public static void main(String[] args) { 
  2.         try { 
  3.              
  4.             FileWriter fw = new FileWriter("D:/tx.txt"); 
  5.             BufferedWriter br=new BufferedWriter(fw); 
  6.             String s = "测试输入"
  7.             br.write(s); 
  8.             br.close(); 
  9.             fw.close(); 
  10.              
  11.             fw = new FileWriter("D:/tx.txt",true); 
  12.             br=new BufferedWriter(fw); 
  13.             s = "二次测试输入"
  14.             br.write(s); 
  15.             br.close(); 
  16.             fw.close(); 
  17.              
  18.         } catch (FileNotFoundException e) { 
  19.             // TODO Auto-generated catch block 
  20.             e.printStackTrace(); 
  21.         } catch (IOException e) { 
  22.             // TODO Auto-generated catch block 
  23.             e.printStackTrace(); 
  24.         } 
  25.     } 
  26.  
  27.     // 输出结果 
  28.     // ↓↓↓ 
  29.  
  30.     // 打开文件tx.txt  测试输入二次测试输入 

看到文件内容之后  可以将true改成false  运行下  看看效果


五、CharArrayReader

CharArrayReader 是一个把字符数组作为源的输入流的实现。

   
   
   
   
  1. //array是输入源 
  2. CharArrayReader(char array[ ])  
  3. //子集以start 指定的索引开始,长度为numChars 
  4. CharArrayReader(char array[ ], int start, int numChars)  

例子:

   
   
   
   
  1. public static void main(String[] args) throws IOException { 
  2.  
  3.         String s = "abcdefghijklmnopqrstuvwxyz"
  4.         char[] cs = s.toCharArray(); 
  5.         CharArrayReader reader = new CharArrayReader(cs); 
  6.         CharArrayReader reader2 = new CharArrayReader(cs, 05); 
  7.  
  8.         int c; 
  9.         while ((c = reader.read()) != -1) { 
  10.             System.out.print((char) c); 
  11.         } 
  12.         System.out.println(); 
  13.  
  14.         while ((c = reader2.read()) != -1) { 
  15.             System.out.print((char) c); 
  16.         } 
  17.  
  18.     } 
  19.  
  20.     // 输出结果 
  21.     // ↓↓↓ 
  22.  
  23.     // abcdefghijklmnopqrstuvwxyz 
  24.     // abcde 

六、CharArrayWriter

CharArrayWriter 实现了以数组作为目标的输出流

   
   
   
   
  1. //第一种形式,创建了一个默认长度的缓冲器。第二种形式,缓冲器长度由numChars指定。 
  2. CharArrayWriter( )  
  3. CharArrayWriter(int numChars)  

 

缓冲器保存在CharArrayWriter 的buf  成员中。缓冲器大小在需要的情况下可以自动增长。缓冲器保持的字符数包含在CharArrayWriter 的count  成员中。buf  和count  都是受保护的域

   
   
   
   
  1. public static void main(String[] args) throws IOException { 
  2.  
  3.     CharArrayWriter f = new CharArrayWriter(); 
  4.      
  5.     String s = "abcdefghijklmnopqrstuvwxyz"
  6.     char buf[] = s.toCharArray(); 
  7.     f.write(buf); 
  8.      
  9.     FileWriter fileWriter=new FileWriter("D:/t.txt"); 
  10.     f.writeTo(fileWriter); 
  11.     fileWriter.close(); 
  12.     f.close(); 
  13.  
  14.  
  15. // 输出结果 
  16. // ↓↓↓ 
  17.  
  18. //打开文件  内容为 abcdefghijklmnopqrstuvwxyz 


七、BufferedReader

BufferedReader  通过缓冲输入提高性能

   
   
   
   
  1. BufferedReader(Reader inputStream)  
  2. BufferedReader(Reader inputStream, int bufSize)  

 


八、 BufferedWriter

BufferedWriter是一个增加了flush( ) 方法的Writer,flush( ) 方法可以用来确保数据缓冲器确实被写到实际的输出流。用BufferedWriter 可以通过减小数据被实际的写到输出流的次数而提高程序的性能。

   
   
   
   
  1. BufferedWriter(Writer outputStream)  
  2. BufferedWriter(Writer outputStream, int bufSize) 

 


九、PushbackReader

PushbackReader 类允许一个或多个字符被送回输入流

   
   
   
   
  1. PushbackReader(Reader inputStream)  
  2. PushbackReader(Reader inputStream, int bufSize)  

PushbackReader  提供了unread( ) 方法。该方法返回一个或多个字符到调用的输入流。

   
   
   
   
  1. void unread(int ch)  
  2. void unread(char buffer[ ])  
  3. void unread(char buffer[ ], int offset, int numChars)  

 


十、PrintWriter

PrintWriter本质上是PrintStream 的字符形式的版本。

   
   
   
   
  1. //flushOnNewline 控制Java 是否在每次输出换行符(\n )时刷新输出流。如果flushOnNewline 为true ,刷新自动发生。若为false ,不进行自动刷新。第一个和第三个构造函数不能自动刷新。  
  2. PrintWriter(OutputStream outputStream)  
  3. PrintWriter(OutputStream outputStream, boolean flushOnNewline)  
  4. PrintWriter(Writer outputStream)  
  5. PrintWriter(Writer outputStream, boolean flushOnNewline)