我正在尋找一個Java DataOutputStream相當於Dart,我可以寫任意類型(int,string,float,byte array等)。有RandomAccessFile,但它不提供字節數組或float-double值。 ByteArray似乎有一些必要的功能,但我不知道如何將它寫入文件或OutputStream。DataOutputStream相當於飛鏢
3
A
回答
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);
}
0
你基本上是要求任意對象序列化。而Dart虛擬機有一個,它不會暴露給程序員(它僅用於快照和消息傳遞)。我會說,揭示它會是一個錯誤 - 在不同的情況下,我們對序列化有不同的要求,「一個真正的解決方案」是不會工作的(Java已經向我們表明了這一點)。
例如,我正在研究Dart的MsgPack實現,我知道Protobuf端口也在工作中,也許有人會啓動Thrift端口......可能性是無限的。
0
我能找到的最接近的東西是這個包:https://github.com/TomCaserta/dart_io/。不幸的是,當讀到字節數組的末尾時有一個錯誤 - 請參閱我在GitHub中的pull請求。
0
你可以使用這個類: https://github.com/TomCaserta/dart_io/blob/master/lib/data_output.dart
不幸的是(一)它不處理流; (b)writeLong不會佔用一個整數。我爲Dart SDK提出了一個問題:https://github.com/dart-lang/sdk/issues/31166
編輯:我已經分叉了dart_io包並解決了上述兩個問題。我的新套件發佈爲dart_data_io: https://github.com/markmclaren2/dart_data_io
相關問題
- 1. 飛鏢的Node.js settings.env相當於
- 2. 飛鏢Web_Audio飛鏢1.6
- 3. 飛鏢上有相當於python的dir()嗎?
- 4. 飛鏢中的飛鏢websocket:io and dart:html
- 5. @飛鏢代碼
- 6. 飛鏢 - NumberFormat的
- 7. 飛鏢基準?
- 8. 與飛鏢PointerLock
- 9. 飛鏢:干將
- 10. #在當前飛鏢中代表什麼
- 11. 飛鏢:長計算
- 12. 飛鏢角劍道
- 13. 導入飛鏢包
- 14. net :: ERR_UNSAFE_PORT在飛鏢
- 15. 飛鏢中的urlencoding
- 16. 有使用飛鏢
- 17. JSON_OBJECT和飛鏢:鏡
- 18. 造型和飛鏢
- 19. 飛鏢EventSource錯誤
- 20. 飛鏢庫佈局
- 21. 酒吧安裝不適用于飛鏢
- 22. 關於StringBuffer的飛鏢問題
- 23. 在飛鏢編輯器中自動生成飛鏢
- 24. 使用沒有飛鏢編輯器的飛鏢問題
- 25. 飛鏢沒有飛鏢編輯器:刷新
- 26. 使用飛鏢動態加載飛鏢腳本
- 27. 飛鏢中有會議嗎?
- 28. 「with」關鍵字在飛鏢
- 29. 飛鏢封裝佈局
- 30. 飛鏢encodeURIComponent方法Map.keys()
感謝這似乎是好的,但這樣做很麻煩。希望對io的更好支持即將推出。 – afsina
Dart基礎庫將在不久的將來更新。確保你提交了一個有你的特定需求的錯誤。 – Cutch