Java缓冲流

本文介绍了Java中的缓冲流(如BufferedInputStream和BufferedOutputStream)概念,它们如何通过内存缓冲提高数据读写效率,并举例说明了如何使用缓冲流实现文件复制,强调了在操作完成后调用flush()方法的重要性。
摘要由CSDN通过智能技术生成

       缓冲流是在其它流的基础上增加一个缓冲区,当处理大量数据时,缓冲流通过在内存中创建缓冲区来减少与磁盘或网络的实际交互次数,以此来提高数据的读写效率。缓冲流包括缓冲输入流(BufferedInputStream)和缓冲输出流(BufferedOutputStream),其中,BufferedInputStream是FilterInputStream的子类,BufferedOutputStream是FilterOutputStream的子类。FilterInputStream和FilterOutputStream是过滤器流的根类,这两个类都是抽象类。(Java中流的概念

      缓冲输入流BufferedInputStream类的构造方法如下:

构造方法含义
BufferedInputStream(InputStream in)创建一个默认大小的缓冲输入流对象。
BufferedInputStream(InputStream in, int size)创建一个指定大小的缓冲输入流对象。

       其中,参数in表示缓冲输入流所包装的输入流对象,参数size为缓冲区的大小,默认值为8192个字节。

       例如,下面的代码创建一个包装文件输入流对象的缓冲输入流对象。

        FileInputStream fis=new FileInputStream("D:\\examples\\myfile1.txt");

        BufferedInputStream bis=new BufferedInputStream(fis);

       缓冲输出流BufferedOutputStream类的构造方法如下:

构造方法含义
BufferedOutputStream(OutputStream out)创建一个默认大小的缓冲输出流对象。
BufferedOutputStream(OutputStream out, int size)创建一个指定大小的缓冲输出流对象。

       其中,参数out表示缓冲输入流所包装的输出流对象,参数size为缓冲区的大小,默认为8192个字节。

       例如,下面的代码创建一个包装文件输出流对象的缓冲输出流对象。

        FileOutputStream fos=new FileOutputStream("D:\\examples\\myfile1.txt");

        BufferedOutputStream bos=new BufferedOutputStream(fos);

       当读写数据时,数据以块为单位先进入缓冲区(块的大小可以进行设置),其后的读写操作则作用于缓冲区。只有缓冲区满时才会将数据送到输出流。一般在关闭一个缓冲区输出流之前,应使用flush()方法,强制输出剩余数据,以确保缓冲区内的所有数据全部写入输出流。缓冲区输出流提供了对mark()、reset()、skip()等方法的支持。

【例1】利用文件字节流和缓冲流实现文件复制

public static void copy(String sourceFile,String targetFile,int size) {
	try {
		FileInputStream fis=new FileInputStream(sourceFile);
		BufferedInputStream bis=new BufferedInputStream(fis,size);
		FileOutputStream fos=new FileOutputStream(targetFile);
		BufferedOutputStream bos=new BufferedOutputStream(fos,size);
		int b;
		while((b=bis.read())!=-1) {
			bos.write(b);
		}
		bos.flush();
		fis.close();
		bis.close();
		fos.close();
		bos.close();
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch(Exception e) {
		e.printStackTrace();
	}
}

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值