テキストを1行ごとに読むと遅いのでバイナリーで読み込んだ後
プログラム内で処理する場合EOFって入ってます?

もしかして入ってないので最初にファイルのトータルサイズを調べておいて
それを超えないようにしないとだめ?