Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.


Read a file from disk and store it in memory.

Source root/file.d

struct Buffer;
Owns a (rmem-managed) buffer.
pure nothrow @nogc @safe ubyte[] extractSlice();
Transfers ownership of the buffer to the caller.
struct File;
struct ReadResult;
pure nothrow @nogc @safe ubyte[] extractSlice();
Transfers ownership of the buffer to the caller.
pure nothrow @nogc ubyte[] extractDataZ();
ditto Include the null-terminator at the end of the buffer in the returned array.
static nothrow bool read(const char[] name, ref OutBuffer buffer);
Read the full content of a file, and append it to buffer
char[] name name of file
OutBuffer buffer file contents appended to it
false = success, true = failed
static nothrow bool write(const(char)* name, const void[] data);

static nothrow bool write(const(char)[] name, const void[] data);
Write a file, returning true on success.
static nothrow void remove(const(char)* name);
Delete a file.
static nothrow bool update(const(char)* namez, const void[] data);

static nothrow bool update(const(char)[] name, const void[] data);
Update file
If the file exists and is identical to what is to be written, merely update the timestamp on the file. Otherwise, write the file.
The idea is writes are much slower than reads, and build systems often wind up generating identical files.
const(char)[] name name of file to update
void[] data updated contents of file
true on success
static nothrow ulong size(const char* namez);
Size of a file in bytes.
char* namez null-terminated filename
ulong.max on any error, the length otherwise.