繁体   English   中英

InputStream从offset读取数据

[英]InputStream reads data from offset

我想实现一个通用的,可重用的类,该类允许在读取数据之前在流上设置Offset。 理想情况下,我希望它可以与所有InputStream一起使用,这样当我从不同的来源获得它们时,就不必包装它们中的每一个。

我在SO中找到了关于PositionInputStream的解决方案,但这并不是我想要的。 谁能推荐Offset InputStream的现有实现?

我认为,最后,所有实现最多都将读取第一个“偏移字节”,
但不会将此显示给用户,
然后向用户返回他希望是读取字节的内容。

例如,假设您的基础结构基于装饰器模式,并且将“包装的” InputStream保留为成员。

读取方法的代码(具有offset和length参数)看起来或多或少像:


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


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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM