Java流的BufferedReader和BufferedWriter

 

一、复习

1、数据流的基本概念的复习。

2、节点流,处理流,字节流,字符流(只能处理字符数据)。

3、出入/输出流体系。用于实现I/O操作的流类和接口在java.io包中。

二、缓冲的字符流(BufferedReader/BufferedWriter)

1、采用缓冲处理是为了提高效率,如果没有缓存,例如FileReader对象,每次调用read()方法进行读操作时,都会直接去文件中读取字节,转换成字符并返回,这样频繁的读   取文件效率很低。

2、缓冲的字符流的出现提高了对流的操作效率,原理就是将数组进行封装。

3、在使用缓冲的字符流对象时,缓冲的存在是为了增强流的功能,因此在建立缓冲的字符流对象时,要先有流对象的存在。

三、使用缓冲的字符流时其实就是使用流对象的方法,只不过加入了数组,对数据进行了临时存储,为了提高操作数据的效率。

四、方法readLine()的原理

该方法用的还是与缓冲的字符流相关联的流对象的read()方法,只不过,每一次读到一个字符,先不进行具体操作,先进行临时存储,当读取到回车标记时,将临时容器中存储的数据一次性返回。

五、关于字节流和字符流的特点

1、  字节流可以操作任何数据。

2、  字符流使用的是字符数组;字节流使用的是字节数组。

六、BufferedReader的特有方法:public String readLine();//一次读一行,到行标记时,将行标记之前的字符数据作为字符串返回。当读到末尾时,返回null。

七、BufferedWriter的特有方法:publicvoid newLine();//写出平台相关的行分隔符来标记一行的终止。Windows平台下为’\n’。

八、粘贴一段今天的作业代码,这代码之中因为缺少一句很简单的代码,使我烦恼了半个小时!经过别人的提醒之后,我才忽然明白自己的失误!这个对我很有提醒作用,使我在今后的编程道路上更加认真!

代码如下:

package wsp.io;

import java.io.*;

public class zy8301 {   //今天的作业

    public static void main(String[] args){

       FileWriter fw = null;

       FileReader fr = null;

       BufferedReader br = null;   //利用缓冲的方法 提高运行的效率

       BufferedWriter bw = null;   //BufferedReader 和BufferedWriter

       char[] arr= new char[1024];

      

       try {

           fw = new FileWriter("C:/Users/Vshoping/lianxi/temp1.txt");

           bw = new BufferedWriter(fw);

           fr = new FileReader("E:/MyEclipse9/wsp/src/wsp/io/zy8301.java");

           br = new BufferedReader(fr,225);

           String str = null;

           while((str=br.readLine())!=null){

              System.out.println(str);

              bw.write(str);

************   

  //引用:BufferedWriter的特有方法:public void newLine();//写出平台相关的行分隔符来标记一行的终止。Windows平台下为’\n’。

              }

           bw.flush();

          

       } catch (IOException e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       }

       finally {

           if(br!=null){

              try {

                  bw.close();

              } catch (IOException e) {

                  // TODO Auto-generatedcatch block

                  e.printStackTrace();

              }

           }

       }

    }

}

在******部分是缺少的代码:bw.newLine();

你可能感兴趣的:(java,newline,null,string,平台,windows)