InputStream从offset中读取数据

时间:2012-10-31 11:07:29

标签: java inputstream

我想实现一个通用的,可重用的类,它允许在读取数据之前在流上设置Offset。理想情况下,我更喜欢使用它来处理所有InputStream,因此当我从不同的源获取它们时,我不必将它们包装在每一个中。

我在SO中找到了关于PositionInputStream的解决方案,但这并不是我想要的。任何人都可以推荐Offset InputStream的现有实现吗?

1 个答案:

答案 0 :(得分:1)

我认为最后,所有实现最多只能读取第一个“偏移字节”,
 但不会向用户提供此信息,
然后返回用户他希望读取的字节。

例如,假设您的基础架构基于decorator模式,并将“包装”的InputStream保存为成员。

读取方法的代码(带偏移和长度参数)可能看起来或多或少如下:


public int read(byte[] b,
                int off,
                int len)
         throws IOException {
    innerInputStream.read(b,off,len);
}


InputStreamDecorator d = new InputStreamDecorator(new FileInputStream("myfile.txt"));

您还可以使用skip的包装实现。
您可以决定让CTOR具有要跳过的字节数参数,此CTOR将调用内部跳过方法。
例如:

public class InputStreamDecorator extends InputStream {
   public InputStreamDecorator(InputStream is, long toSkip) {
      this.internalStream = is;
      is.skip(toSkip);
   }
}