博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoop IO 之InputBuffer和DataInputBuffer
阅读量:7004 次
发布时间:2019-06-27

本文共 1486 字,大约阅读时间需要 4 分钟。

hot3.png

   类似于JAVA.IO 的装饰器模式, InputBuffer输入缓冲和DataInputBuffer数据缓冲的实现封装于内部类Buffer,该类的功能只是提供一个空的缓冲区,用于存储数据。Buffer代码如下:

private static class Buffer extends ByteArrayInputStream {    public Buffer() {      super(new byte[] {});    }    public void reset(byte[] input, int start, int length) {      this.buf = input;      this.count = start+length;      this.mark = start;      this.pos = start;    }    public int getPosition() { return pos; }    public int getLength() { return count; }  }
  InputBuffer和DataInputBuffer的方法委托于内部类private Buffer buffer,例如InputBuffer部分代码:
/** Returns the current position in the input. */  public int getPosition() { return buffer.getPosition(); }  /** Returns the length of the input. */  public int getLength() { return buffer.getLength(); }
DataInputBuffer 内置的Buffer代码如下:
private static class Buffer extends ByteArrayInputStream {    public Buffer() {      super(new byte[] {});    }    public void reset(byte[] input, int start, int length) {      this.buf = input;      this.count = start+length;      this.mark = start;      this.pos = start;    }    public byte[] getData() { return buf; }    public int getPosition() { return pos; }    public int getLength() { return count; }  }
  两个类封装的Buffer一样,而其方法也都委托依赖于buffer,只是InputBuffer和DataInputBuffer继承于不同的类,如下:

 DataInputBuffer:

public class DataInputBuffer extends DataInputStream {}

InputBuffer:

public class InputBuffer extends FilterInputStream {}

DataInputBuffer UML结构图

转载于:https://my.oschina.net/tuzibuluo/blog/40242

你可能感兴趣的文章
.Net魔法堂:开启IIS的WebGarden、WebFarm和StateServer之旅
查看>>
Sumsets(3sum问题,枚举d,c二分a+b)
查看>>
Implementing dm-verity
查看>>
Python安装模块出错(ImportError: No module named setuptools)解决方法
查看>>
Linux 端口防火墙
查看>>
【转载】如何用子网掩码得到网络/主机地址
查看>>
C++多线程框架-----Mutex互斥和Sem信号量
查看>>
Wpf Binding.Path设置
查看>>
jfinal控制器添加多个拦截器
查看>>
跟着百度学PHP[14]-初识PDO数据库抽象层
查看>>
小豆包的学习之旅:机器人定位
查看>>
好程序猿训练营,让你成为名副事实上的好程序猿
查看>>
有关一道printf 的面试题
查看>>
#AOS应用基础平台# 实现了在用户权限范围内自己定义的快捷菜单的导航展示
查看>>
[转]ssh中如何实现定时任务(spring对quartz的支持)
查看>>
mysql查询表的字符集
查看>>
读研以来的一些感想:名校好在哪里?
查看>>
大数据中心的业务研发路线
查看>>
rtmp推流开源代码备注一下
查看>>
SQLServer 日期函数大全 SQLServer 时间函数大全
查看>>