本帖最后由 客剑 于 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)+"毫秒");
- }
- }
复制代码
|
|