任意の型(int、string、float、byte arrayなど)を記述できるDartに相当するJavaDataOutputStreamを探しています。RandomAccessFileがありますが、バイト配列またはfloat-double値を提供しません。ByteArrayには必要な機能がいくつかあるようですが、ファイルやOutputStreamに書き込む方法がわかりません。
質問する
1092 次
5 に答える
2
以下は、ByteArray を OutputStream に書き込む方法を示す簡単なコードです。
#import('dart:io');
#import('dart:scalarlist');
main() {
File file = new File("c:\\temp\\foo.txt");
OutputStream os = file.openOutputStream();
os.onNoPendingWrites = () {
print('Finished writing. Closing.');
os.flush();
os.close();
};
Uint8List byteList = new Uint8List(64);
ByteArray byteArray = byteList.asByteArray();
int offset = 0;
offset = byteArray.setUint8(offset, 72);
offset = byteArray.setUint8(offset, 101);
offset = byteArray.setUint8(offset, 108);
offset = byteArray.setUint8(offset, 108);
offset = byteArray.setUint8(offset, 111);
offset = byteArray.setUint8(offset, 0);
byteArray.setFloat32(offset, 1.0);
os.write(byteList);
}
于 2012-10-02T14:51:51.940 に答える
0
基本的に、任意のオブジェクトのシリアル化を求めています。また、Dart VM には 1 つありますが、プログラマーには公開されません (スナップショットとメッセージの受け渡しにのみ使用されます)。それを公開するのは間違いだと思います-さまざまな状況では、シリアル化のさまざまな要件があり、「1つの真のソリューション」は機能しません(Javaはすでにそれを示しました)。
たとえば、私は Dart の MsgPack 実装に取り組んでいます。Protobuf ポートも開発中であることは知っています。おそらく誰かが Thrift ポートを開始するでしょう...可能性は無限大です。
于 2012-10-03T03:44:57.337 に答える
0
私が見つけることができる最も近いものは、このパッケージです: https://github.com/TomCaserta/dart_io/。残念ながら、バイト配列の最後まで読み取るときにバグがあります。GitHub のプル リクエストを参照してください。
于 2017-10-20T00:16:07.117 に答える