есть вот такой код
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 правых разрядов но мне не понятно почему в файл который я копировал содержит корректную информацию там что каким то образом информация усеченная до байтов снова восстанавливаться?