JAVA--缓冲流

39 篇文章 0 订阅
9 篇文章 0 订阅

(一)缓冲流概述

缓冲流是一类处理流(包裹流),必须依附于节点流(原始流);

缓冲流是带有缓冲区的输入输出流;

缓冲流可以减少我们对IO的访问,达到保护硬盘的效果;

缓冲流对数据的读写具有缓冲作用,提高读写效率并增加了一些新方法;

(二)四类缓冲流

BufferedReader

提供一个readLine方法用于读取一行字符串,但无法读取回车换行符;

BufferedWriter

提供一个newLine方法用于写入一个行分割符;

import java.io.*;
public class TestBuffered_1 {
		public static void main(String[] args) {
			BufferedReader br=null;
			BufferedWriter bw=null;
			
			try {
				 br=new BufferedReader(new FileReader("D:\\JAVA\\lianxi\\src\\lianxi\\TestBuffered_1 .java"));
				 bw=new BufferedWriter(new FileWriter("C:\\Users\\86152\\Desktop\\huanchongliu\\chenggong.dox"));
			
			String st;
			while(null!=(st=br.readLine())) {
				bw.write(st);
				bw.newLine();
			}
			bw.flush();
			}
			catch(FileNotFoundException e) {
				e.printStackTrace();
				System.exit(-1);
			}
			catch(IOException e) {
				e.printStackTrace();
				System.exit(-1);
			}
			finally {
				try {
					br.close();
					bw.close();
				}
				catch(IOException e) {
					e.printStackTrace();
					System.exit(-1);
				}
			}
			System.out.printf("复制成功!\n");
		}	
	}

BufferedInputStream

带有缓冲的输入流,允许一次向硬盘读取多个字节的数据;

BufferedOutputStream

带有缓冲的输出流,允许一次向硬盘写入多个字节的数据;

public class TestBuffered_2 {
		public static void main(String[] args) {
			BufferedInputStream br=null;
			BufferedOutputStream bw=null;
			
			try {
				 br=new BufferedInputStream(new FileInputStream("D:\\JAVA\\lianxi\\src\\lianxi\\TestBuffered_2.java"));
				 //br有个默认缓冲区,大小为32个字节
				 bw=new BufferedOutputStream(new FileOutputStream("C:\\Users\\86152\\Desktop\\huanchongliu\\chenggong.dox"));
				 //bw有个默认缓冲区,大小为32个字节
			byte[] buf=new byte[1024];
			int len;
			
			while(-1!=(len=br.read(buf,0,1024))) {
				//br.read(buf,0,1024)中表示不是从buf中读取数据,而是从br关联的地址文件中读取数据,
				//并先将其放入br默认的缓冲区中,再将缓冲区中的数据写入buf数组中,每次可向数组写入1024个字节,
				//返回实际字节数,全部数据写入完成返回-1
				bw.write(buf);
				//bw.write(buf)同上理可推
				
			}
			bw.flush();
			}
			catch(FileNotFoundException e) {
				e.printStackTrace();
				System.exit(-1);
			}
			catch(IOException e) {
				e.printStackTrace();
				System.exit(-1);
			}
			finally {
				try {
					br.close();
					bw.close();
				}
				catch(IOException e) {
					e.printStackTrace();
					System.exit(-1);
				}
			}
			System.out.printf("复制成功!\n");
		}	
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值