On Wednesday, 8 May 2013 at 21:34:00 UTC, Carl wrote:
I am learning D so I thought this would be the correct place
for this question (I assume I am making an error, not the
compiler).
I am writing arrays of ubytes using rawWrite to a file.
Whenever I write arrays full of numbers I have no problems, but
once I write an array with zeroes I can then no longer write to
that file.
For example:
ubyte[] data = [5, 34, 9, 45];
file.rawWrite(data); // OKAY
ubyte[] data = [0, 0, 0, 45];
file.rawWrite(data); // NOT OKAY
I get no errors or exceptions, it just won't write the array. I
can't even open a new file stream and write, not even after
rerunning the program. My only guess is some kind of string
related problem where '\0' causes it to terminate.
Thanks in advance.
P.S. DMD, Ubuntu 11
Works fine on my Arch linux(64bit):
import std.stdio;
void main(){
auto oFile = File("testfile","w");
ubyte[] data1 = [0, 0, 0, 45];
oFile.rawWrite(data1);
ubyte[] data2 = [1, 2, 3, 4];
oFile.rawWrite(data2);
oFile.close();
auto iFile = File("testfile","r");
ubyte[16] buffer;
writeln(iFile.rawRead(buffer));
iFile.close();
}
Prints: [0, 0, 0, 45, 1, 2, 3, 4]
If you were working on windows I would have suggested to try
opening the file in binary mode.