есть вот такой код
public class Main2 {
    public static void main(String[] args) throws IOException {
        FileInputStream inputStream = new FileInputStream("C:\\Users\\Михаил\\Desktop\\2.txt");
        FileOutputStream outputStream = new FileOutputStream("C:\\Users\\Михаил\\Desktop\\1.txt");
        byte[] buffer = new byte[inputStream.available()];
        while (inputStream.available() > 0)
        {

            int count = inputStream.read(buffer);
            for (byte b:buffer){
                System.out.print((char) b);
            }
            outputStream.write(buffer, 0, count);
        }

        inputStream.close();
        outputStream.close();
    }
}
и есть файл с таким вот содержанием
19847   asfdvfczfasafsafsfx           159.00  12
198479  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
меня тревожит вопрос который я не могу понять, сам файл копируется в другой файл корректно не зависимо русские буквы или английские но вот если я вывожу на консоль то русские символы отображаются не корректно:
19847   asfdvfczfasafsafsfx           159.00  12
198479  ￘○￰￲ ￯→￿₩■¥ ￷¥￰■¥ ￱ ￰│￱￳■↑○173.00  17
19847983ᅧ￳￰￲↑¢ ¦→￿ ￱■○￳£○￰¦│￱￲○¬, ￰¢￧↓10173.991234
я понимаю что это из за выхода за границу byte и происходит усечение до 8 правых разрядов но мне не понятно почему в файл который я копировал содержит корректную информацию там что каким то образом информация усеченная до байтов снова восстанавливаться?