Java中io流的学习(三)BufferedInputStream和BufferedOutputStream

BuffereInputStream(带有缓冲区的字节输入流)继承于FilterInputStream,而FilterInputStream继承于InputStream,BuffereOutputStream(带有缓冲区的字节输出流)继承于FilterOutputStream,而FilterOutputStream继承于OutputStream,关于FilterInputStream和FilterOutputStream,其实它们只是个“装饰器模式”的封装,也就是说它并没有给出具体的功能实现,它具体的功能实现都是通过它的子类来实现的。

这两个其实主要就是一个缓冲的作用,我们知道,如果直接让文件或程序跟内存进行交互,效率是十分低下的,而通过缓冲流进行交互,能够大大提高效率,缓冲流的主要作用就是提高了效率。

对于文件的存在与否的反应,和其它一样,不存在时,输入流会报错,输出流会自动创建。

常用的方法是:read(),read(byte [] b,int off,int len),write(int b),write(byte[] b,int off,int len),close();这些具体参照InputStream和OutputStream中这些方法的使用。

下面我们通过代码实例来对其进行学习:

①利用缓冲流进行拷贝,一个一个字节拷贝

        @Test
	public void t2() throws Exception{
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream("H:\\javaio\\测试.avi"),2*1024);
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("H:javaio\\测试copy2.avi"),2*1024);
		int len;
		while((len = bis.read()) != -1){
			bos.write(len);
		}
		bos.close();
		bis.close();
	}

②利用缓冲流进行拷贝,多个字节多个字节拷贝 

	@Test
	public void t1() throws Exception{
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream("H:\\javaio\\测试.avi"));
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("H:javaio\\测试copy1.avi"));
		byte[] b = new byte[2*1024];
		int len;
		while((len = bis.read(b)) != -1){
			bos.write(b, 0, len);
		}
		bos.close();
		bis.close();
	}

③利用缓冲流实现对文件的追加

	@Test
	public void t3() throws Exception{
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("H:\\javaio\\test.txt",true));
		bos.write("sadadas".getBytes());
		bos.close();
	}

④利用缓冲流读取文件

	@Test
	public void t5() throws Exception{
		FileInputStream fis = new FileInputStream("H:\\javaio\\qianfengwrite1.txt");
		int len;
		while((len = fis.read()) != -1){
			System.out.print((char)len);
		}
		fis.close();
	}

Java中io流的学习(一)File:Java中io流的学习(一)File_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(二)FileInputStream和FileOutputStream:Java中io流的学习(二)FileInputStream和FileOutputStream_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(三)BuffereInputStream和BuffereOutputStream:Java中io流的学习(三)BuffereInputStream和BuffereOutputStream_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(四)InputStreamReader和OutputStreamWriter:Java中io流的学习(四)InputStreamReader和OutputStreamWriter_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(五)FileReader和FileWriter:Java中io流的学习(五)FileReader和FileWriter_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(六)BufferedReader和BufferedWriter:Java中io流的学习(六)BufferedReader和BufferedWriter_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(七)ObjectInputStream和ObjectOutputStream:Java中io流的学习(七)ObjectInputStream和ObjectOutputStream_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(八)PrintStream和PrintWriter:Java中io流的学习(八)PrintStream和PrintWriter_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(九)RandomAccessFile:Java中io流的学习(九)RandomAccessFile_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(十)ByteArrayInoutStream和ByteArrayOutputStream:Java中io流的学习(十)ByteArrayInoutStream和ByteArrayOutputStream_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(十一)NIO:Java中io流的学习(十一)NIO_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客

Java中io流的学习(总结):Java中io流的学习(总结)_有问题请发邮箱dengyifanlittle@163.com进行讨论-CSDN博客_java中io流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值