本帖最后由 HM朱蛟 于 2013-4-16 02:10 编辑
请问为什么和老师的实验现象不同呢?
我弄来弄去第一个字符都是73,老师的却是-1.
老师视频截图我发上来拉,是【黑马程序员_毕向东_Java基础视频教程第19天-14-IO流(自定义字节流的缓冲区-read和write的特点).avi】里的一个实验。
先谢各位。{:soso_e100:}
代码如下- import java.io.*;
- class Run
- {
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static void main(String[] args) throws IOException
- {
- long start = System.currentTimeMillis();//计时器
- copy_2();
- long end = System.currentTimeMillis();//计时器
- sop(start-end+"毫秒");
- }
- public static void copy_2()throws IOException
- {
- MyBufferedInputStream bufis = new MyBufferedInputStream(new FileInputStream("c:\\1.mp3"));
- BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("c:\\3.mp3"));
-
- int by = 0;
- System.out.println("第一个字节:"+bufis.myRead());//为什么这里输出结果不是-1?
- while((by=bufis.myRead())!=-1)
- {
- bufos.write(by);
- }
- bufos.close();
- bufis.myClose();
- }
- }
- class MyBufferedInputStream
- {
- private InputStream in;
- private byte[] buf = new byte[1024*4];
-
- private int pos = 0,count = 0;
-
- MyBufferedInputStream(InputStream in)
- {
- this.in = in;
- }
- //一次读一个字节,从缓冲区(字节数组)获取。
- public int myRead()throws IOException
- {
- //通过in对象读取硬盘上数据,并存储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;
- }
- return -1;
- }
- public void myClose()throws IOException
- {
- in.close();
- }
- }
复制代码 |
|