Take a look at sysread and read. If these are single byte characters, just do a 3MB read().
Update: looks like read() can take into account UTF-8 characters if that is what you have. Otherwise if just plain ASCII, then its one byte per character.
Comment on Re: Need to read certain number of chars in a file