1

整数の巨大なバイナリ ファイルを読み取る必要があるとします。便利な方法は次のとおりです。

FileInputStream fi = new FileInputStream(file);
BufferedInputStream bi = new BufferedInputStream( fi); 
DataInputStream di =new DataInputStream(bi);

しかし、n 番目の整数から始まる巨大なブロックを読み取る必要があるとします。これまでのところ、一種のバッファを自分で次のように実装しました。

RandomAccessFile fp=new RandomAccessFile(file);
fp.seek(position);
byte[] buff= new  byte[len];
fp.read(buff, 0, len);
ByteArrayInputStream bIn = new ByteArrayInputStream(buff);
DataInputStream dIn= new DataInputStream(bIn);

これで、 のデータを解析して buff処理し、次のブロックを読み取ることができます。

使用できる標準のバッファオブジェクトがあるかどうか疑問に思っていました。コードを簡素化し、自分でバッファリングを処理したくありません。

どんなヒントでも大歓迎です。ヤコポ

4

2 に答える 2

2

NIOを見てください。たとえば、java.nio.MappedByteBuffer です。

于 2010-12-07T09:35:09.687 に答える
2

bi と di でラップする前に fi.skip(position) から始めてください。基礎となるストリームは、位置が十分に大きい場合、実際にシークを呼び出します。

于 2010-12-07T09:45:16.533 に答える