случайно как решение отметил, ну я написал условие что если следующас строка пустая break и какой еще ввод у меня только имя файла ожидается, по коду вроде все ровно
для считывания имени файла, тоже используй BufferedReader.
еще на всякий случай
sb.append(fr.readLine());
будет склеивать последнее слово в этой строке и первое слово в следующей. добавь в конце пробел, или используй StringJoiner