Вы просто переворачиваете byte
с из входного потока в char
с, используя
char c = (char) b;
Это определенно не утвержденная форма Good Housekeeping.
Stream
с доставить byte
с, и вы хотите char
с. Reader
s доставит char
s и выполнит для вас перевод набора символов в автоматическом и управляемом режиме.
Вы должны обернуть InputStreamReader
вокруг InputStream
. Конструктор для InputStreamReader
позволяет вам указать CharSet
, который позволит вам контролировать перевод.
Чтение из InputStreamReader
, конечно, даст "реальные" char
с. Еще одним преимуществом является то, что вы можете обернуть BufferedReader
вокруг InputStreamReader
и затем читать целые строки за раз (в String
), используя readLine
.
РЕДАКТИРОВАТЬ: Чтобы проиллюстрировать, что я подразумеваю под «обтеканием», вот несколько (непроверенных!) Кодов, иллюстрирующих идею:
BufferedReader br = new BufferedReader(new InputStreamReader(bin, "US-ASCII"));
...
String line = br.readLine();