9
Q
二進制文件I/O
A
回答
7
rawRead和rawWrite應該完全一樣的fread,fwrite的,只有他們是模板以參數尺寸和長度的照顧。
例如
auto stream = File("filename","r+");
auto outstring = "abcd";
stream.rawWrite(outstring);
stream.rewind();
auto inbytes = new char[4];
stream.rawRead(inbytes);
assert(inbytes[3] == outstring[3]);
rawRead在FREAD方面實現
T[] rawRead(T)(T[] buffer)
{
enforce(buffer.length, "rawRead must take a non-empty buffer");
immutable result =
.fread(buffer.ptr, T.sizeof, buffer.length, p.handle);
errnoEnforce(!error);
return result ? buffer[0 .. result] : null;
}
2
如果你只是想在值(比方說,整型),你可以簡單地做一個大的緩衝區讀取:
int[] ints = cast(int[]) std.file.read("ints.bin", numInts * int.sizeof);
和
std.file.write("ints.bin", ints);
當然,如果喲你有更多的結構化數據,那麼斯科爾威爾士的答案更合適。
相關問題
- 1. python中的二進制文件IO,從哪裏開始?
- 2. 複製二進制文件
- 3. Java二進制IO寫入和讀取
- 4. 二進制「尾巴」文件
- 5. 二進制安裝文件
- 6. 寫入二進制文件
- 7. 編譯二進制文件
- 8. 閱讀二進制文件
- 9. 的Python:二進制文件
- 10. StringIO與二進制文件?
- 11. 二進制文件操作
- 12. C++二進制文件
- 13. InflateException:二進制XML文件
- 14. 寫二進制文件
- 15. 二進制文件大小
- 16. 二進制.dat文件
- 17. 二進制文件解釋
- 18. 文件到二進制流
- 19. 寫入二進制文件?
- 20. 修改二進制文件
- 21. PHP - wkhtmltopdf二進制文件
- 22. 寫入二進制文件
- 23. 閱讀二進制文件
- 24. WebSphere MQ二進制文件
- 25. Ruby grep二進制文件?
- 26. 寫入二進制文件
- 27. C二進制文件與ascii文件
- 28. 文件閱讀:feof()二進制文件
- 29. 二進制文件和其他文件
- 30. 閱讀文件的二進制文件
感謝您的好評。 – 2010-10-05 04:56:46
如果您的數據已經在內存中(從api調用接收)而不是在磁盤上,該怎麼辦? Stream api不支持rawRead,並且沒有文件句柄傳遞給.fread ... – 2014-09-23 02:02:10