如何用D语言读写二进制文件?在 C 语言中是:
FILE *fp = fopen("/home/peu/Desktop/bla.bin", "wb");
char x[4] = "RIFF";
fwrite(x, sizeof(char), 4, fp);
我在 D 找到了 rawWritedocs http://www.digitalmars.com/d/2.0/phobos/std_stdio.html#rawWrite,但我不知道用法,也不知道我的想法。fread
来自C:
T[] rawRead(T)(T[] 缓冲区);
如果文件未打开,则抛出异常。否则,调用fread文件句柄并抛出错误。
rawRead 在 Windows 上始终以二进制模式读取。
rawRead 和 rawWrite 的行为应该与 fread、fwrite 完全相同,只是它们是处理参数大小和长度的模板。
e.g.
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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)