java流与文件操作

  

12.5字符流

五.缓冲字符流BufferedReader/Buffreedwriter

      1.目的:采用缓冲字符流是为了提高对流操作的效率;

      2. 构造方法

public BufferedReader(Reader in); 创建默认字符大小的缓冲字符流

public BufferedReader(Reader in ,int sz) 创建指定字符大小的缓冲字符流

public BufferedWriter(Writer out)

public BufferWriter(Writer out,int sz)

      3.特有方法

(1)BufferedReader()特有方法public String readLine();/一次读一行,遇到行标记时将该行作为字符串返回。末尾返回null

(2)BufferedWriter()特有的方法public void newLine();写入分割符

      4.使用缓冲字符流

           (1)BufferedReader

        FileReader fr=null;

       BufferedReader br=null;

           fr=new FileReader("F:\\JAVA\\lesson\\src\\res\\demo1.txt ");//读文件

           br=new BufferedReader(fr,255);//缓冲流//创建字符为255的缓冲字符流

           String str=null;

           while((str=br.readLine())!=null){// 利用readLine()方法读出缓冲区里的内容并赋给str

              System.out.println(str);

           }

       (2) BufferedWriter

fw=new FileWriter("F:\\JAVA\\lesson\\src\\res\\BufferedDemo1.txt");//  \\=/

            bw=new BufferedWriter(fw);//创建默认字符大小的缓冲区

            bw.write("hello");//写入到bw缓冲区中。而不是写入FileWriter

5.模拟创建缓冲字符流

(1)

import java.io.*;

public class myBufferReader {

    //属性

    private Reader r;//代表普通输入流

    //构造方法

    public myBufferReader(Reader r){

       this.r=r;

    }

    /*readLine()方法:增加一个缓冲区。然后调用r对象的read()读取字符放到增加的缓冲区里

     * ,当读到行标记时,把缓冲区中的字符转换成字符串返回

     */

    public String readLine(){

       StringBuffer strB=new StringBuffer();//创建的缓冲区

       int ch=0;

       try {

           while((ch=r.read())!=-1){

              if(ch=='\r'){//'\n'换行'\r'回车

                  continue;

              }

              if(ch=='\n'){

                  return new String(strB);//return strB.toString()等同//读到换行标记时返回

              }else

                  strB.append((char)ch);//读到的不是换行符 将ch转换成字符 存到缓存区里

           }

       } catch (IOException e) {

           e.printStackTrace();

       }

       if(strB.length()!=0){//文件达到末尾行strB长度不为0 返回strB

           return new String(strB);

       }

       return null;//文件文件达到末尾行strB长度为0;返回null;

    }

    //close();

    public void close(){

       try {

           r.close();

       } catch (IOException e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

    }

}

(2)创建缓冲区、利用缓冲区读/写数据。遇到换行则写入/读出。否则将字符存在缓存去内。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值