View source code
Display the source code in std/mmfile.d from which this page was generated on github.
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 local clone.

Class std.mmfile.MmFile

MmFile objects control the memory mapped file resource.

class MmFile ;

Constructors

NameDescription
this (filename) Open memory mapped file filename for reading. File is closed when the object instance is deleted.
this (filename, mode, size, address, window) Open memory mapped file filename in mode. File is closed when the object instance is deleted.

Properties

NameTypeDescription
length[get] ulongGives size in bytes of the memory mapped file.

Methods

NameDescription
mode () Read-only property returning the file mode.
opIndex (i) Returns byte at index i in file.
opIndexAssign (value, i) Sets and returns byte at index i in file to value.
opSlice () Returns entire file contents as an array.
opSlice (i1, i2) Returns slice of file contents as an array.
factory (classname) Create instance of class specified by the fully qualified name classname. The class must either have no constructors or have a default constructor.
opCmp (o) Compare with another Object obj.
opEquals (o) Test whether this is equal to o. The default implementation only compares by identity (using the is operator). Generally, overrides and overloads for opEquals should attempt to compare objects by their contents. A class will most likely want to add an overload that takes your specific type as the argument and does the content comparison. Then you can override this and forward it to your specific typed overload with a cast. Remember to check for null on the typed overload.
toHash () Compute hash function for Object.
toString () Convert Object to a human readable string.

Enums

NameDescription
Mode The mode the memory mapped file is opened with.

Aliases

NameDescription
opDollar Forwards length.

Example

Read an existing file

import std.file;
write(deleteme, "hello"); // deleteme is a temporary filename
scope(exit) remove(deleteme);

// Use a scope class so the file will be closed at the end of this function
scope mmfile = new MmFile(deleteme);

writeln(mmfile.length); // "hello".length

// Access file contents with the slice operator
// This is typed as `void[]`, so cast to `char[]` or `ubyte[]` to use it
const data = cast(const(char)[]) mmfile[];

// At this point, the file content may not have been read yet.
// In that case, the following memory access will intentionally
// trigger a page fault, causing the kernel to load the file contents
writeln(data[0 .. 5]); // "hello"

Example

Write a new file

import std.file;
scope(exit) remove(deleteme);

scope mmfile = new MmFile(deleteme, MmFile.Mode.readWriteNew, 5, null);
writeln(mmfile.length); // 5

auto data = cast(ubyte[]) mmfile[];

// This write to memory will be reflected in the file contents
data[] = '\n';

mmfile.flush();

writeln(read(deleteme)); // "\n\n\n\n\n"

Authors

Walter Bright, Matthew Wilson

License

Boost License 1.0.