Reading a structured binary file?

Jonathan M Davis jmdavisProg at gmx.com
Sat Aug 3 14:25:23 PDT 2013


On Saturday, August 03, 2013 23:10:12 John Colvin wrote:
> On Saturday, 3 August 2013 at 18:23:58 UTC, Gary Willoughby wrote:
> > On Saturday, 3 August 2013 at 18:14:47 UTC, Gary Willoughby
> > 
> > wrote:
> >> This sounds a great idea but once the file has been opened as
> >> a MmFile how to i convert this to a ubyte[] so the
> >> std.bitmanip functions work with it?
> > 
> > I'm currently doing this:
> > 	auto file = new MmFile("file.dat");
> > 	ubyte[] buffer = cast(ubyte[])file[];
> > 	buffer.read!uint(); //etc.
> > 
> > Is this how you would recommend?
> 
> That defeats the object of memory mapping, as the [] at the end
> of cast(ubyte[])file[] implies copying the whole file in to
> memory.

Are you sure about that? Maybe I'm just not familiar enough with mmap, but I 
don't see anything in MmFile which would result in it copying the whole file 
into memory. I guess that I'll have to do some more reading up on mmap. 
Certainly, if slicing it like that copies it all into memory, that's a big 
problem.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list