Поскольку вы, кажется, неопытны во вводе данных в Java, возможно, лучше объяснить это немного
FileInputStream читает из файла в поток данных. Когда вы создаете файл для имени файла, он откроет файл для вас.
DataStreamReader будет считывать FileInputStream и обрабатывать кодировку, обрабатывать входную сторону и давать вам символы при чтении.
BufferedReader Помогает дать эффективность и удобство. Вместо того, чтобы читать побайтово (что связано с большими накладными расходами), он помогает справиться с чтением блоков и сохраняет каждый блок в своем буфере. Это невидимо для вас, но поможет производительности. Он также дает вам функции для чтения построчно, что очень поможет вам в вашей задаче.
Вот почему вы упаковываете файл в разные слои читателей. Я советую вам посмотреть, как использовать ArrayLists (java.util), так как они являются самоизменяющимися массивами и позволят вам легко хранить строки (как строки) построчно. Хорошая практика на будущее и простота в использовании.
Что касается поиска токенов, вы уже прочитали свои строки (построчно или сохраненные). Вы можете использовать String.contains, чтобы проверить, есть ли у строки ваш токен, или вы можете использовать indexOf, чтобы найти определенное место в строке. В любом случае, с этого момента просто пропускается нужное количество строк и отправляется 9-я строка в нужную вам функцию