在 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);
更易于使用。