黑马程序员-I/O流(2)

------------- android培训java培训、java学习型技术博客、期待与您交流! ------------
 

自定义字节缓冲区之拷贝一个
MP3的思路

 

模仿一个字节缓冲区

首先需要想到的应该InutStram对象

一次读一个字节,由于是要加入缓冲,所以我们只需要将值存在数组中

然后再借由BufferedInputStram来读取他,接着写入,

此时,假设MP3里有5000000000 B的数据要写入,那么我们需要设一个字节数组

一次存1024个字节,然后缓冲区里是从这个1024个数组里面慢慢的取出数据,然后

1024被取到0的时候,再从MP3文件里取字节到数组里。由此循环

那么,我们需要一个变量来计数这个字节数组是不是==0,如果次数等于0的话,就往里面装数据。还需要一个指针变量,因为取完了 指针需要返回0;也就是从数组第0个下标开始取值。

 

BufferedInputStream

 

 

 
public  class  MyBufInputSteam{
        privateInputSream  in;
        privatebyte  buf []  =  byte[ 1024];  //
        privateint  post  =  0//
private  int  count = 0//
 
public  int  MyRead()  throws  IOException{
        if( count  ==  0){  //,0
                            //
 
             count  =  in. read( buf);  //
             if( count  <  0){  //, -1;
                 return  -1;
            }
             pos  =  0//,
             byte  b  =  buf[ pos];  //
             count --//;
             pos ++//++1024
             return  b & 0xff//,-1,
                                 //,int 
                                //int8 
       } else  if( count  >  0){
             byte  b  =  buf[ pos];
             count --;
             pos ++;
             return  b & 0xff;
       }
        return  -1;
    }
     public  void  Myclose()  throws  IOException{
        in. close();   //,
    }
}
 

 

public  class  Test {
     public  static  void  main( String[]  argsthrows  IOException {
        MyBufInputSteam  mi  =  new  MyBufInputSteam(
                  new  FileInputStream( new  File( "C:\\Users\\jython\\Desktop\\1.mp3")));
       
        BufferedOutputStream  bof  =  new  BufferedOutputStream( new  FileOutputStream( new  File( "C:\\Users\\jython\\Desktop\\2.mp3")));
        int  i = 0;
       
        while(( i = mi. MyRead()) != -1){
             bof. write( i); 
       }
       
        bof. close();
        mi. Myclose();
    }
}
 

运行效果

:

 图片


------------- android培训java培训、java学习型技术博客、期待与您交流! ------------

详情请查看:http://edu.csdn.net/ 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值