Помните, что символы в Java используют 16-битный символ Unicode. Исходный файл System.in и т. Д. Должен был быть совместим со средами, поддерживающими Java, которые (тогда, на заре времени) часто не поддерживали Unicode. Это, наряду с досадно разрозненной обработкой концов строк, означало, что потоки байтов были единственным типом, который имел одинаковую семантику независимо от платформы.