public class BufferRing extends Object
总体的想法是,在内存中构建一个数组环,每个节点是固定宽度的数组(默认8192)。
每次翻页 都相当于将当前环节点的下一个节点读满
每个环节点都有指针指向其下一个节点
每个节点都有一个有效结尾位置以及本节点是否为一个输入流的最末节点
支持一个便利的标记方法(不支持回溯,标记的开始和结束只能在一个节点内不能跨节点)
支持成块写到输出流
考虑到效率问题,BufferRing 有一些基本假设:
构造器和说明 |
---|
BufferRing(InputStream ins,
int len,
int width) |
限定符和类型 | 方法和说明 |
---|---|
void |
close()
安全关闭输入流
|
void |
dump(OutputStream ops)
被 Dump 的节点将会通过标志表示可以再次加载
|
String |
dumpAsString(String charset)
将标记的内容 Dump 成一个字符串
|
long |
load()
从当前节点的 next 开始,依次将所有可用的节点全部加载满
|
MarkMode |
mark(RemountBytes rb) |
long |
readed() |
void |
skipMark()
不输出,直接跳过 Mark,相当于将当前的 Mark dump 到一个空的输出流
|
public BufferRing(InputStream ins, int len, int width)
public MarkMode mark(RemountBytes rb) throws IOException
IOException
public void dump(OutputStream ops) throws IOException
ops
- 输出流,如果为 null,则不会输出,直接改变标志IOException
public String dumpAsString(String charset) throws IOException
IOException
public void skipMark() throws IOException
IOException
public long load() throws IOException
IOException
public long readed()
public void close()
Copyright © 2017. All rights reserved.