字节流和字符流(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(); } }