代码改变世界

字节流和字符流(BufferedReader类和BufferedWriter类)

2016-11-19 15:52  backyyan  阅读(1651)  评论(0编辑  收藏  举报

一般情况下,为了提高字符文件读/写效率,通常需要为文件读/写器添加一个缓冲读/写器,分别为BufferedReader类和BufferedWriter类。

1:BufferedReader类

假如上面的例子使用的文件Student.txt是一个学生名单,每个名字占一行。如果我们想读取名字,那么每次必须读取一行,但FileReader类没有提供这种方法,所以必须把这个流(对象)再接到另一个流上,从后一个流中读取名单。java提供名为BufferedReader的类,主要是用来实现读取文件中的一个段落。其格式如下:

BufferedReader br=new BufferedReader(newFileReader(filename));

也可以改为以下形式:

FileReaderto file=new FileReader(filename);

BufferredReader br=new BufferedWriter(tofile);

在声明BufferedReader类对象后,就可以调用其readLine方法来读取文件中的数据。当读取到回车符(/n)是,就表示本次的读取结束,将所读到的内容以字符串数据的形式输入到程序中,下次读取从回车符后面的数据开始。当所有的数据内容都读取完后,返回值null。在完成文件数据的读取后,需要用close()方法关闭打开的文件。示例代码如下:

import java.io.*;
public class BufferedReaderDemo {
public static void main(String []args)throws IOException{
FileReader fr=new FileReader("student.txt");
BufferedReader br=new BufferedReader(newFileReader("Student.txt"));
String Strings = br.readLine();//创建变量S用于储存从文件中读到的第一行数据。
Object s = null;
while (s!=null){//判断s变量是否接受数据
System.out.print(s+"/n");
s=br.readLine();//读取下一行数据并储存到s中
}
br.close();//关闭流
}

private static Reader newFileReader(String string) {
// TODO Auto-generated method stub
return null;
}
}

 

 

2:BufferedWriter类

类似的,可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写到目的地,创建BufferedWriter类对象的格式如下:

BufferedWriter br=new BufferedWriter(newFileWriter(filename));

或者是

FileWriterfrom file=new FileWriter(filename);

BufferedWriter bw=new BufferedWriter(fromfile);

在声明BufferedWriter类的对象后,调用其newLine()方法来写入一个回车符。因为不同的操作系统平台,其回车符的表达方式不同,所以,可以使用newLine()方法直接产生系统声明的回车符,而不必在意其具体的表达方式。例如,下面的陈故乡创建一个文件student。txt并写入字符串和回车符。

示例代码如下:

 

import java.io.*;

public class BufferedWriterDemo {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(newFileWriter("student.txt"));
        bw.write("this is my student.txt");// 向文件中输入字符串
        bw.newLine();// 换行
        bw.write("xixi");// 想文件中写入内容
        bw.close();
    }
}