3

任意の型(int、string、float、byte arrayなど)を記述できるDartに相当するJavaDataOutputStreamを探しています。RandomAccessFileがありますが、バイト配列またはfloat-double値を提供しません。ByteArrayには必要な機能がいくつかあるようですが、ファイルやOutputStreamに書き込む方法がわかりません。

4

5 に答える 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 に答える