Reading a file eats whole memory
kb3ctd2 at yahoo.com
Sun Oct 21 08:39:11 PDT 2007
"div0" <div0 at users.sourceforge.net> wrote in message
news:fffqid$1csk$1 at digitalmars.com...
> You are trying to read a string in, so I guess the routine is using the
> 1st four bytes as a string length count. That's how tango works anyway
You are precisely right.
If you just want to get all the data in a file, just do:
int main(char args)
ubyte data = cast(ubyte)std.file.read(args);
Two things: one, std.file.read returns a void, which is a bit like D's
equivalent of a void* -- it can point to anything, but you can't modify its
data, and it also has a length which indicates the number of bytes in the
data. Two, I'm casting to ubyte instead of char. Do NOT use char for
"plain old data" as in C. char is a UTF-8 datatype, not a "one byte"
datatype. You'll most likely get errors unless your input file is all plain
ASCII or UTF-8 text. D provides the byte and ubyte types for raw byte data.
More information about the Digitalmars-d-learn