In one of our projects we had to address the problem of parsing huge files of more than 8 GB in an efficient way. The first problem that requires attention is how to parse such a file without having to wait for hours, i.e. speeding up parsing to something close to what the operating system and the underlying hardware (disk drive, cpe and such) is willing and able to deliver in terms of transfer rate.
The obvious and typical answers are buffering, threading and NIO (non blocking IO) in that order. Buffering is the obvious choice and will never do harm as long as you pick correct buffer sizes.
Interesting discussion and comparision of buffersizes using different techniques (standard IO, threading and NIO)