Just a general answer. If there's some sort of peek() method, you could probably set your file pointer to filesize (or filesize - 1?) and then decrement the pointer until you reach 0. There is may be some class in .NET that abstracts this out. Of course, you have to define some sort of buffer size (basically define the size of the "chunks" of the file you are reading in). In that case, the filesize - 1 above might become filesize - bufferSize, and you would be incrementing your file pointer by bufferSize also.