JAVA文件IO流的理解(二)

1.字符流的缓冲区

       (1) 缓冲区的出现是为了提高数据的读写效率。

       (2)对应类:BufferedWriter 和 BufferedReader

        (3)缓冲区要结合流才可以使用

/*
 *
 * 字符流读取缓冲区:
 * 该缓冲区提供了一个一次读一行的方法readline,返回null时,表明读到末尾。方便与对文本数据的获取。
 */
package com.heima;
import java.io.*;
public class BufferedReaderDemo {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
         //创建一个读取流对象和文件相关联
		 FileReader fr=new FileReader("buf.txt");
		 //为了提高效率,加入缓冲区技术。将字符读取流对象作为参数传递给缓对象的构造函数。
	      BufferedReader br=new BufferedReader(fr);
	      String line=null;
	      while((line=br.readLine())!=null)
	      {
	    	  System.out.println(line);
	      }
	      br.close();
	     
	}
}
/*
 *字符流写入缓冲区
 */
package com.heima;
import java.io.*;
public class BufferWriterDemo {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
      //创建一个字符写入流对象。
		FileWriter fw=new FileWriter("buf.txt");
		//为了提高字符写入流效率,加入了缓冲技术。
		//只要将需要提高效率的流对象作为参数传递给缓冲区的构造函数即可。
		BufferedWriter bw=new BufferedWriter(fw);
		
		for(int x=1;x<5;x++)
		{
			bw.write("abcd");
			bw.newLine();
			bw.flush();
		}
		//记住,只要用到缓冲区,就要记得刷新。
		//bw.flush();
		//其实关闭缓冲区,就是在关闭缓冲区中的流对象。
		bw.close();
	}

}

/* * 通过缓冲区复制一个.java文件 */

package com.heima;import java.io.*;
public class CopyTextByBuf {
public static void main(String[] args) {// TODO Auto-generated method stub BufferedReader bufr=null; BufferedWriter bufw=null; try{ bufr=new BufferedReader(new FileReader("BufferedWriterDemo.java")); bufw=new BufferedWriter(new FileWriter("bufWriter_copy.txt")); String line =null; while((line=bufr.readLine())!=null)//readline方法返回是回车符之前的数据内容。不会返回回车符。 { bufw.write(line); bufw.newLine(); bufw.flush(); } }catch(IOException e){ throw new RuntimeException("读写失败"); }finally{ try { if(bufr!=null) bufr.close();} catch (IOException e) {// TODO Auto-generated catch blockthrow new RuntimeException("读取关闭失败");}try { if(bufw!=null) bufw.close();} catch (IOException e) {// TODO Auto-generated catch blockthrow new RuntimeException("写入关闭失败");} } }}





注:readLine方法的原理:无论是读一行,读取多少个字符。其实最终都是在硬盘上一个一个读取。所以最终使用的还是read方法一次读一个的方法。





























































































































































































































































































































































































































































































































  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值