![](/img/trans.png)
[英]how to read data more than 3GB with Java InputStream from middle 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.