Буду рад, если кто-то захочет разобраться в моих костылях! Задачу смог решить только после дебага У меня есть 2 файла. Первый содержит текст - программа его читает и выводит строку без проблем Второй файл содержит цифры. И тут проблема. Я заметил, что в 65 строке кода после того как мой inputStream прочитает 1 байт и получит нужную цифру, то следующий байт будет '\r' (возврат каретки). Этому символу соотвествует цифра 13 в юникоде. Пришлось в 68 строке буквально блокировать чтение этого символа. Внимание вопрос - откуда там берется этот символ?? P.S. если читать оба файла которые содержат только текст, то все в порядке
package com.javarush.task.task16.task1630;

import java.io.*;

/*
Последовательный вывод файлов
Последовательный вывод файлов
1. Разберись, что делает программа.
2. В статическом блоке считай 2 имени файла firstFileName и secondFileName.
3. Внутри класса Solution создай нить public static ReadFileThread, которая реализует
интерфейс ReadFileInterface (Подумай, что больше подходит - Thread или Runnable).
3.1. Метод setFileName должен устанавливать имя файла, из которого будет читаться содержимое.
3.2. Метод getFileContent должен возвращать содержимое файла.
3.3. В методе run считай содержимое файла, закрой поток. Раздели пробелом строки файла.
4. Подумай, в каком месте нужно подождать окончания работы нити, чтобы обеспечить последовательный вывод файлов.
4.1. Для этого добавь вызов соответствующего метода.

Ожидаемый вывод:
[все тело первого файла]
[все тело второго файла]


Requirements:
1. Статический блок класса Solution должен считывать с консоли имена двух файлов и сохранять их в переменные firstFileName и secondFileName.
2. Объяви в классе Solution public static класс ReadFileThread.
3. Класс ReadFileThread должен реализовывать интерфейс ReadFileInterface.
4. Класс ReadFileThread должен быть унаследован от подходящего класса.
5. Метод run класса ReadFileThread должен считывать строки из файла, установленного методом setFileName. А метод getFileContent, этого же класса, должен возвращать вычитанный контент. Возвращаемое значение - это одна строка, состоящая из строк файла, разделенных пробелами.
6. Метод systemOutPrintln должен вызывать метод join у созданного объекта f.
7. Вывод программы должен состоять из 2х строк. Каждая строка - содержимое одного файла.
*/

public class Solution {
    public static String firstFileName;
    public static String secondFileName;
    static{
        try(BufferedReader bf = new BufferedReader(new InputStreamReader(System.in))){
            Solution.firstFileName = bf.readLine();
            Solution.secondFileName = bf.readLine();
        }
        catch(IOException e){

        }
    }

    public static class ReadFileThread extends Thread implements ReadFileInterface {
        String fileName;
        String returned = "";
        @Override
        public void setFileName(String fullFileName) {
            fileName = fullFileName;
        }

        @Override
        public String getFileContent() throws IOException {
            return returned;
        }



        @Override
        public void run() {

            try(InputStream inputStream = new FileInputStream(fileName)){
                while(inputStream.available() > 0){
                    int data = inputStream.read();
                    if((char)data == '\r') continue;
                    if((char)data == '\n'){
                        returned += " ";
                    }
                    else{
                        returned += (char) data;
                    }

                }
            }
            catch(Exception e){

            }
        }
    }

    public static void main(String[] args) throws InterruptedException, IOException {
        systemOutPrintln(firstFileName);
        systemOutPrintln(secondFileName);

    }

    public static void systemOutPrintln(String fileName) throws InterruptedException, IOException {
        ReadFileInterface f = new ReadFileThread();
        f.setFileName(fileName);
        f.start();
        f.join();

        System.out.println(f.getFileContent());
    }

    public interface ReadFileInterface {

        void setFileName(String fullFileName);

        String getFileContent() throws IOException;

        void join() throws InterruptedException;

        void start();
    }

    //add your code here - добавьте код тут
}