PeekInputStream

来源:互联网 发布:mac keeper劫持 编辑:程序博客网 时间:2024/06/08 06:48

PeekInputStream 是 ObjectInputStream 类的一个内部类。

名如其类,此类用于向前“偷窥”一个字节,但并不影响 read 和 readn。

PeekInputStream 有两个重要的方法:peek 和 read。前者是偷窥,向前得到一个字节。后者是真正往前读得到一个字节,此操作将会向后移动流指针。

此类的设计思想精妙在 peek 的实现,此方法并非是直观上的实现。下面的代码给出几种直观上的实现。


以上两种实现的思路均涉及到向后移动指针,效率较低。PeekInputStream 的实现摒弃这种低效的方式:

当需要向前‘偷窥’一个字节时,检查‘偷窥’缓存,如果非空直接返回;否则向后读一个字节,存入缓存(一个字节长度),再返回。

当需要向前读字节时,优先返回‘偷窥’缓存,再将缓存置空;否则按正常方式读取。


0 0
原创粉丝点击