那是一段如此自以为是,又如此狼狈不堪的青春岁月。
有欢笑,也有泪水;有朝气,也有颓废;
有甜蜜,也有荒唐;有自信,也有迷茫。



java.io.PushbackInputStream

java.io.PushbackInputStream可以实现向一个输入流添加“推回(push back)”或“取消读取(unread)”一个字节的功能。比如,我在过滤XML content prolog中的UTF-8的BOM(EF BB BF)的时候就很有用:

FileInputStream inputStream = new FileInputStream(xmlFile);
PushbackInputStream pis = new PushbackInputStream(inputStream,3);
byte[] buf = new byte[3];
pis.read(buf, 0, 3);
if (!((buf[0] == -17) && (buf[1] == -69) && (buf[2] == -65))) {
pis.unread(buf, 0, 3);
}
注意:要在 PushbackInputStream 的构造方法上加上所读取/推送字节数组的大小(默认值为1),如果不指定缓冲大小或大小小于字节数组的大小,当读取数据量多于缓冲大小时,再 unread 会抛出消息为 "Push back buffer is full" 的 java.io.Exception。

0 Comments: