データを読み取る前に、ストリームに Offset を設定できる汎用の再利用可能なクラスを実装したいと思います。理想的には、これがすべての InputStream で機能することを望みます。これにより、異なるソースから取得するときに、それらをすべてラップする必要がなくなります。
SO でPositionInputStreamに関する解決策を見つけましたが、それはまさに私が望むものではありません。Offset InputStream の既存の実装を推奨できる人はいますか?
データを読み取る前に、ストリームに Offset を設定できる汎用の再利用可能なクラスを実装したいと思います。理想的には、これがすべての InputStream で機能することを望みます。これにより、異なるソースから取得するときに、それらをすべてラップする必要がなくなります。
SO でPositionInputStreamに関する解決策を見つけましたが、それはまさに私が望むものではありません。Offset InputStream の既存の実装を推奨できる人はいますか?
最後に、すべての実装はせいぜい最初の「オフセットバイト」を読み取るが、
これをユーザーに提示せず
、読み取りバイトであると予想されるものをユーザーに返すと思います。
たとえば、インフラストラクチャがデコレーターパターンに基づいており、「ラップされた」InputStream をメンバーとして保持しているとします。
read メソッドのコード (オフセットと長さのパラメーターを使用) は、多かれ少なかれ次のようになります。
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 は内部スキップ メソッドを呼び出します。
例えば:
public class InputStreamDecorator extends InputStream {
public InputStreamDecorator(InputStream is, long toSkip) {
this.internalStream = is;
is.skip(toSkip);
}
}