1

Dartでは、BMPを読みたいので、BIGファイルである可能性があります。私はこのようにします:

var inputStream = imageFile.openInputStream();
inputStream.onData = () {
  print(inputStream.available());
  inputStream.read(18); // Some headers
  int width = _readInt(inputStream.read(4));
  int height = _readInt(inputStream.read(4));
  // Another stuff ...
}

小さな画像でもうまく機能しますが、3Moファイルを読み取ると、onDataが何度も実行されます。実際、onDataは65536バイトのパケットによってトリガーされます。どのようなベストプラクティスですか?HEADER_STATE、COLORS_STATES、...のような状態で自動化を記述して、読み取り状態を設定し、inputStream.readがバッファーであると見なす必要がありますか?または、リーダークラスが恋しいですか?2つのパケットの間のいくつかのバイトを見逃すのが怖いです。私はこれに少しがっかりしています、私がJavaでそれをするとき、私はただ書く:

inputStream.read(numberOfBytes);

より使いやすい。

4

1 に答える 1

2

RandomAccessFileを開いたら、次のような操作を実行できます。

RandomAccessFile raf; // Initialized elsewhere

int bufferSize = 1024*1024; // 1 MB
int offsetIntoFile = 0;
Uint8List byteBuffer = new Uint8List(bufferSize); // 1 MB
Future<int> bytesReadFuture = raf.readList(byteBuffer, offsetIntoFile, bufferSize);

bytesReadFuture.then((bytesRead) {
    Do something with byteBuffer here.
});

同期呼び出しreadListSyncもあります。

ジョン

于 2012-10-05T14:18:54.463 に答える