The relative performance of using a FileStream as opposed to memory-mapped
files basically comes down to usage patterns and hardware capabilities, not
so much the size of the file or the data you are accessing.
In the majority of cases file access is sequential or localized and a stream
based approach with the appropriate buffer size is definitely the better
method and should out perform memory-mapped files in virtually all cases. On
the other hand when your file access is random (if you find yourself using
Seek or Position frequently to move significant distances) then
memory-mapped files will usually out-perform stream based implementations,
sometimes by large margins.
Memory-mapped files are not directly supported by the .Net framework but are
relatively easy to implement using unmanaged code.
Though, from the sounds of your post you will be doing sequential type
access so the stream based approach is almost certainly superior for you.