How to Efficiently Read a File Line-By-Line in Java