15.6.6 字符输入流FileReader类和输出流FileWriter类的使用
“FileReader”类和“FileWriter”类分别是“InputStreamReader”类和“OutputStreamWriter”类的子类,它们提供将字符数据直接写入文件,或从文件中直接读出字符数据的简便方法。
【实例15.18】下面看一个有关这两个类的实例,此实例由上面的程序段修改而成,读者可通过对比,来衡量哪种方法更好。
01 import java.io.*;
02 ///在read1方法中,以带缓冲的输入流对象为参数,它主要是让这个输入流对象读取数据
03 ///在write1方法中,以带缓冲的输出流对象为参数,它主要是让这个输出流对象写入数据到f
04 ///对象中
05 public class file17
06 {
07 public void read1(BufferedReader br)
08 {
09 try
10 {
11 System.out.println(br.readLine());
12 }
13 catch(Exception e)
14 {}
15 }
16 public void write1(String str, BufferedWriter bw)
17 {
18 if(str.length()>5)
19 {
20 try
21 {
22 bw.write(str);
23 bw.newLine();
24 bw.flush();
25 }
26 catch(Exception e){}
27 }
28 else if((str.length())<5)
29 {
30 try
31 {
32 bw.write("输入有误!");
33 bw.newLine();
34 bw.flush();
35 }
36 catch(Exception e)
37 {}
38 }
39 }
40 ///创建一个文件类对象f
41 ///创建一个文件输出流对象fw
42 ///创建一个文件输入流对象fr
43 ///fr对象先读取2.txt文件
44 ///fr对象输出读入的2.txt文件
45 ///创建一个带缓冲的输入流对象br
46 ///创建一个代缓冲的输出流对象bw
47 ///让bw将数据写入到f中
48 ///让br从f中将数据读出来
49 public static void main(String[]args)throws Exception
50 {
51 file17 f2=new file17();
52 File f=new File("d:\filetest","2.txt");
53 FileReader fr=new FileReader(f);
54 FileWriter fw=new FileWriter(f);
55 BufferedWriter bw=new BufferedWriter(fw);
56 BufferedReader br=new BufferedReader(fr);
57 f2.write1("祖国是个大花园",bw);
58 f2.write1("小明说是吗",bw);
59 f2.write1("小王觉得小明说的没有错",bw);
60 f2.write1("谢谢了",bw);
61 f2.read1(br);
62 f2.read1(br);
63 f2.read1(br);
64 f2.read1(br);
65 br.close();
66 bw.close();
67 }
68 }
【代码说明】第53行创建了FileReader对象fr,第54行创建了FileWriter对象fw。第57~60行在文件2.txt中输入数据。第61~64行在控制台输出数据。
【运行效果】
祖国是个大花园
小王觉得小明说的没有错
输入有误!
null
从上面修改过的程序段可以看出,使用“FileReader”类和“FileWriter”类的确是比以前要简单的多,其流程分别如图15.8a和图15.8b所示。
图 15.8 FileReader与FileWriter比较的模拟图