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.6.6 字符输入流FileReader类和输出流FileWriter类的使用 - 图1

图 15.8 FileReader与FileWriter比较的模拟图