Java 流(Stream)简介:2、Reader 和 Writer

http://blog.csdn.net/YidingHe/article/details/4093982

Java 流(Stream)简介:2、Reader 和 Writer

分类: Java 技术 818人阅读 评论(1) 收藏 举报

介绍了 InputStream 和 OutputStream,接下来介绍 Reader 和 Writer。这两个类其实就是将 InputStream 和 OutputStream 包装了一下。不过它们处理的不是字节(byte),而是字符(char)。如果一个流当中的内容都是文本,那么用 Reader/Writer 处理起来会简单些。下面是一个用 Reader 读取文本文件的例子:

  1. import java.io.FileReader;  
  2. import java.io.IOException;  
  3. import java.io.Reader;  
  4.    
  5. /** 
  6.  * 读取文本文件 
  7.  */  
  8. public class ReadTextFileDemo {  
  9.    
  10.     // 程序入口  
  11.     public static void main(String[] args) {  
  12.         String path = "c:/boot.ini";  
  13.         String content = "";  
  14.    
  15.         try {  
  16.             Reader reader = new FileReader(path);  
  17.             char[] buffer = new char[10240];  
  18.             int count;  
  19.   
  20.             while ((count = reader.read(buffer)) != -1) {  
  21.                 content += new String(buffer, 0, count);  
  22.             }  
  23.         } catch (IOException e) {  
  24.             System.err.println("读取文件失败。");  
  25.             e.printStackTrace();  
  26.         }  
  27.    
  28.         System.out.println(content);  
  29.     }  
  30.   
  31. }  

至于如何用 Writer 将文本内容写入文件,这里就不给出例子了,看官自己试着写一下吧。

上面这个例子,仍然不是读取文本文件最常用的方式。Java 提供 BufferedReader,我们通常用它来读取文本文件。下面是一个例子:
  1. import java.io.BufferedReader;  
  2. import java.io.FileReader;  
  3. import java.io.IOException;  
  4.    
  5. /** 
  6.  * 用 BufferedReader 读取文本文件 
  7.  */  
  8. public class ReadTextDemo2 {  
  9.    
  10.     public static void main(String[] args) {  
  11.         String path = "c:/boot.ini";  
  12.         String content = "";  
  13.    
  14.         try {  
  15.             BufferedReader reader = new BufferedReader(new FileReader(path));  
  16.             String line;  
  17.             while ((line = reader.readLine()) != null) {  
  18.                 content += line + "/n";  
  19.             }  
  20.         } catch (IOException e) {  
  21.             System.err.println("读取文件失败。");  
  22.             e.printStackTrace();  
  23.         }  
  24.    
  25.         System.out.println(content);  
  26.     }  
  27. }  

BufferedReader 这种按行读取的方式符合大部分程序的处理逻辑,所以用得最多。对应的 BufferedWriter 类,也请看官自己熟悉一下。




原文地址:https://www.cnblogs.com/lexus/p/2195880.html