黑马程序员技术交流社区
标题:
IO流缓冲区
[打印本页]
作者:
wuyuwen
时间:
2015-1-2 12:05
标题:
IO流缓冲区
缓冲区的原理到底怎么整的?
作者:
zhaozhao
时间:
2015-1-2 13:27
如果你看了视频中,自定义的缓冲区,你就比较容易理解。缓冲区封装了read方法和一个数组。如果数组中有数据,就直接从数组中读取数据,如果没有数据,就从硬盘上将数据读到数组里。因为一次从硬盘上读一组数据,比读一个字节要快的多,所以提高了效率。
一下是自定义缓冲区代码,你可以参考一下:
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
{
//缓冲区中没有数据,读入数据,并读出一个字节
if(count==0)
{
count = in.read(buf); //内部封装read方法,读取硬盘数据
if(count<0)
return -1; //读到末尾,返回-1
pos = 0;
byte b = buf[pos];
count--;
pos++;
return b&0xff; //取一个int数的后8位。
}
//缓冲区中有数据,读出数据
else if(count>0)
{
byte b = buf[pos];
count--;
pos++;
return b&0xff;
}
return -1;//为了编译通过
}
public void myClose()throws IOException
{
in.close();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2