java io 缓冲流_JAVA IO流 (四) 缓冲流的使用

packageatguigu.senior.day11.java;importorg.junit.Test;import java.io.*;/*** 处理流之一:缓冲流的使用

*

* 1.缓冲流:

* BufferedInputStream

* BufferedOutputStream

* BufferedReader

* BufferedWriter

*

* 2.作用:提供流的读取、写入的速度

* 提高读写速度的原因:内部提供了一个缓冲区

*

* 3. 处理流,就是“套接”在已有的流的基础上。

*

*@authorshkstart

* @create 2019 下午 2:44*/

public classBufferedTest {/*实现非文本文件的复制*/@Testpublic void BufferedStreamTest() throwsFileNotFoundException{

BufferedInputStream bis= null;

BufferedOutputStream bos= null;try{//1.造文件

File srcFile = new File("爱情与友情.jpg");

File destFile= new File("爱情与友情3.jpg");//2.造流//2.1 造节点流

FileInputStream fis = newFileInputStream((srcFile));

FileOutputStream fos= newFileOutputStream(destFile);//2.2 造缓冲流

bis = newBufferedInputStream(fis);

bos= newBufferedOutputStream(fos);//3.复制的细节:读取、写入

byte[] buffer = new byte[10];intlen;while((len = bis.read(buffer)) != -1){

bos.write(buffer,0,len);//bos.flush();//刷新缓冲区

}

}catch(IOException e) {

e.printStackTrace();

}finally{//4.资源关闭//要求:先关闭外层的流,再关闭内层的流

if(bos != null){try{

bos.close();

}catch(IOException e) {

e.printStackTrace();

}

}if(bis != null){try{

bis.close();

}catch(IOException e) {

e.printStackTrace();

}

}//说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可以省略.//fos.close();//fis.close();

}

}//实现文件复制的方法

public voidcopyFileWithBuffered(String srcPath,String destPath){

BufferedInputStream bis= null;

BufferedOutputStream bos= null;try{//1.造文件

File srcFile = newFile(srcPath);

File destFile= newFile(destPath);//2.造流//2.1 造节点流

FileInputStream fis = newFileInputStream(srcFile);

FileOutputStream fos= newFileOutputStream(destFile);//2.2 造缓冲流

bis = newBufferedInputStream(fis);

bos= newBufferedOutputStream(fos);//3.复制的细节:读取、写入

byte[] buffer = new byte[1024];intlen;while((len = bis.read(buffer)) !=-1){

bos.write(buffer,0,len);

}

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{//4.资源关闭//要求:先关闭外层的流,再关闭内层的流

if(bos !=null){try{

bos.close();

}catch(IOException e) {

e.printStackTrace();

}

}if(bis != null){try{

bis.close();

}catch(IOException e) {

e.printStackTrace();

}

}//说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可以省略.//fos.close();//fis.close();

}

}public voidtestCopyFileWithBuffered(){long start =System.currentTimeMillis();

String srcPath= "C:\\Users\\Administrator\\Desktop\\01-视频.avi";

String destPath= "C:\\Users\\Administrator\\Desktop\\03-视频.avi";

copyFileWithBuffered(srcPath,destPath);long end =System.currentTimeMillis();

System.out.println("复制操作花费的时间为:" + (end - start));//618 - 176

}/*使用BufferedReader和BufferedWriter实现文本文件的复制*/

public voidtestBufferedReaderBufferedWriter(){

BufferedReader br= null;

BufferedWriter bw= null;try{//创建文件和相应的流

br = new BufferedReader(new FileReader(new File("dbcp.txt")));

bw= new BufferedWriter(new FileWriter(new File("dbcp1.txt")));//读写操作//方式一:使用char[]数组//char[] cbuf = new char[1024];//int len;//while((len = br.read(cbuf)) != -1){//bw.write(cbuf,0,len);// //bw.flush();//}//方式二:使用String

String data;while ((data = br.readLine())!= null){

bw.write(data);

bw.newLine();

}

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}finally{//关闭资源

if(bw != null){try{

bw.close();

}catch(IOException e) {

e.printStackTrace();

}

}if(br !=null){try{

br.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值