BufferedInputStream和BufferedOutputStream

1.  java.io.BufferedInputStream与java.io.BufferedOutputStream可以为InputStream,OutputStream类增加缓冲区功能。构建BufferedInputStream实例时,需要给定一个InputStream类型的实例,实现BufferedInputStream时,实际上最后是实现InputStream实例。同样,构建BufferedOutputStream时,也需要给定一个OutputStream实例,实现BufferedOutputStream时,实际上最后是实现OutputStream实例。

 

2. BufferedInputStream的数据成员buf是一个位数组,默认为2048字节。当读取数据来源时,例如文件,BufferedInputStream会尽量将buf填满。当使用read()方法时,实际上是先读取buf中的数据,而不是直接对数据来源作读取。当buf中的数据不足时,BufferedInputStream才会再实现给定的InputStream对象的read()方法,从指定的装置中提取数据

 

3. BufferedOutputStream的数据成员buf也是一个位数组,默认为512字节。当使用write()方法写入数据时实际上会先将数据写到buf中,当buf已满时才会实现给定的OutputStream对象的write()方法,将buf数据写到目的地,而不是每次都对目的地作写入的动作

 

实现文件复制功能:

FileOutputStream fos=new FileOutputStream(file1);
FileInputStream fin=new FileInputStream(file2);

int len;
byte[]buffer=new byte[1024];   //这里需要建立缓冲区
while((len=fin.read(buffer))!=-1){  //从文件读取数据写到自定义缓冲区中
	fos.write(buffer,0,len);   //读取自定义缓冲区里长度为len的字节数据输出到文件中
}
bos.flush();

 

 

 如果使用缓存流,就不需要自己建立缓冲区

FileOutputStream fos=new FileOutputStream(file1);
FileInputStream fin=new FileInputStream(file2);

BufferedInputStream bis=new BufferedInputStream(fin);		//进行缓冲包装
BufferedOutputStream bos=new BufferedOutputStream(fos);

int len;
while((len=bis.read())!=-1){	//读取文件的数据写到BufferedInputStream 的缓冲区里去
	bos.write(len);	// 从缓冲区读取len长度的字节输出到文件中
}
bos.flush();

PS:上面的理解和测试好像有的问题。看到的朋友自己重新了解一下。我好像理解错误了。有待修改


BufferedReader 的使用

FileReader fr=new FileReader("d:/aaa.txt");
FileWriter fin=new FileWriter("d:/1231.txt");
BufferedReader br=new BufferedReader(fr);
String buffer=null;
while((buffer=br.readLine())!=null){
	fin.write(buffer);
}
fin.flush();

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值