Разница между InputStream и InputStreamReader заключается в том, что InputStream читается как байт, а InputStreamReader читается как символ. Например, если текст в файле — abc, то оба они работают нормально. Но если текст представляет собой a你们, который состоит из a и двух китайских символов, то InputStream не работает.
Поэтому нам следует использовать InputStreamReader, но мой вопрос:
Как InputStreamReader распознает символы?
— это один байт, а китайский иероглиф — два байта. Читает ли он a как один байт и распознает другие символы как два байта, или каждый символ в этом тексте читается InputStreamReader как два байта?
Подробнее здесь:
https://stackoverflow.com/questions/576 ... multi-byte