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