Решаешь задачу. Когда ничего не понимаешь - слизываешь код и методом тыка генеришь правильный свой. Тем самым находишь ошибку. Осталось понять, что же именно нагенерила.
Слизанный код прячешь в шпаргалки.
Кажется, я так и не пойму ничего в потоках и чтении из фаилов с помощью java...