自定义了一个字节流缓冲区,为什么没有拷贝到数据呢?
class Test {
public static void main(String[] args) throws Exception{
long beginTime = System.currentTimeMillis();
MyBufferedInputStream bufips = new MyBufferedInputStream(new FileInputStream("D:\\我的文档\\My Pictures\\large_Psty_82854o204237.jpg"));
BufferedOutputStream bufops = new BufferedOutputStream(new FileOutputStream("D:\\我的文档\\My Pictures\\copy.jpg"));
int byt = 0;
while((byt=bufips.read())!=-1){
bufops.write(byt);
}
bufips.close();
bufops.close();
long endTime = System.currentTimeMillis();
System.out.println(endTime-beginTime);
}
}
class MyBufferedInputStream{
private InputStream is;
private byte[] buffer = new byte[1024];
private int pos = 0,count = 0;
MyBufferedInputStream(InputStream is){
this.is = is;
}
//一个字节一个字节,从缓冲区(字节数据)获取。
public int read() throws IOException{
/*
* 通过is对象读取硬盘上的数据,并存储到buffer中。
* 当缓冲区数据被读完之后,再从硬盘读取数据。
* 当读到文件的末尾返回-1。
*/
if(count==0){
count = is.read(buffer);
//读取到文件的末尾
if(count<0){
return -1;
}
pos = 0;
byte b = buffer[pos];
count --;
pos ++;
return b;
}else if(count>0){
byte b = buffer[pos];
count --;
pos ++;
return b;
}
return -1;
}
public void close() throws IOException{
is.close();
}
} |
|