http://blog.csdn.net/YidingHe/article/details/4093982
Java 流(Stream)简介:2、Reader 和 Writer
介绍了 InputStream 和 OutputStream,接下来介绍 Reader 和 Writer。这两个类其实就是将 InputStream 和 OutputStream 包装了一下。不过它们处理的不是字节(byte),而是字符(char)。如果一个流当中的内容都是文本,那么用 Reader/Writer 处理起来会简单些。下面是一个用 Reader 读取文本文件的例子:
- import java.io.FileReader;
- import java.io.IOException;
- import java.io.Reader;
- /**
- * 读取文本文件
- */
- public class ReadTextFileDemo {
- // 程序入口
- public static void main(String[] args) {
- String path = "c:/boot.ini";
- String content = "";
- try {
- Reader reader = new FileReader(path);
- char[] buffer = new char[10240];
- int count;
- while ((count = reader.read(buffer)) != -1) {
- content += new String(buffer, 0, count);
- }
- } catch (IOException e) {
- System.err.println("读取文件失败。");
- e.printStackTrace();
- }
- System.out.println(content);
- }
- }
至于如何用 Writer 将文本内容写入文件,这里就不给出例子了,看官自己试着写一下吧。
上面这个例子,仍然不是读取文本文件最常用的方式。Java 提供 BufferedReader,我们通常用它来读取文本文件。下面是一个例子:
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- /**
- * 用 BufferedReader 读取文本文件
- */
- public class ReadTextDemo2 {
- public static void main(String[] args) {
- String path = "c:/boot.ini";
- String content = "";
- try {
- BufferedReader reader = new BufferedReader(new FileReader(path));
- String line;
- while ((line = reader.readLine()) != null) {
- content += line + "/n";
- }
- } catch (IOException e) {
- System.err.println("读取文件失败。");
- e.printStackTrace();
- }
- System.out.println(content);
- }
- }
BufferedReader 这种按行读取的方式符合大部分程序的处理逻辑,所以用得最多。对应的 BufferedWriter 类,也请看官自己熟悉一下。