| 
 
| 本帖最后由 客剑 于 2014-8-5 19:05 编辑 
 自定义缓冲字节流输入 时出错,用来拷贝电影,rmvb电影只能拷63字节的内容,下午 查了2个小时没弄清楚怎么回事,哪里出错啦?!我已经疯了。
 
 复制代码/*___________________自定义缓冲输入字节流_________________________*/
import java.io.*;
class MyBufferedInputStream
{
        private InputStream in;
        private byte[] buf=new byte[1024];
        private int pos=0,count=0;
        MyBufferedInputStream(InputStream in)
        {
                this.in=in;
        }
        //一次读一个字节,从缓冲区(字节数组)中获取。
        public int myRead()throws IOException
        {
                //通过is对象读取硬盘中的数据,并存储如buf缓冲区(内存中)字节数组中。
                if(count==0)
                {
                        count=in.read(buf);
                        if(count<0)
                                return -1;
                        pos=0;
                        byte b=buf[pos];
                        count--;
                        pos++;
                        return b;
                }
                else if(count>0)
                {
                        byte b=buf[pos];
                        count--;
                        pos++;
                        return b; 
                }
                else 
                        return -1;
        }
        public void myClose()throws IOException
        {
                in.close();
        }
}
class T
{
        public static void main(String[] args)throws IOException
        {
                long start=System.currentTimeMillis();
                //文件并联
                FileInputStream fis=new FileInputStream("I:\\欧美电影\\【电影www.quanji.com】蒙羞之旅bd中英双字1280高清.rmvb");
                FileOutputStream fos=new FileOutputStream("H:\\java201406\\19\\蒙羞之旅.rmvb");
                MyBufferedInputStream mbls=new MyBufferedInputStream(fis);
                BufferedOutputStream bfos=new BufferedOutputStream(fos);
                int bt=0;
                while((bt=mbls.myRead())!=-1)
                {
                        bfos.write(bt);                        
                }
                //关闭资源                
                mbls.myClose();
                bfos.close();
                long end=System.currentTimeMillis();
                System.out.println((end-start)+"毫秒");
        }
}
 
 
 | 
 |