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.

Reply via email to