Непосредственно из этого Java API а>:
записывать
public void write(int b)
Записывает указанный байт в этот поток. Если байт представляет собой новую строку и включена автоматическая очистка, будет вызван метод очистки.
Обратите внимание, что байт записывается как заданный; чтобы написать символ, который будет переведен в соответствии с кодировкой символов платформы по умолчанию, используйте методы print(char) или println(char).
Я вижу, что это указано the byte is written as given;
Однако, если я попытаюсь write(65)
, я получу ожидаемое A
.
Что мне написать в write()
, чтобы не совпадало так же, как было бы с print()
? Не могли бы вы сделать какой-нибудь пример?
A
. - person Sotirios Delimanolis   schedule 05.09.2013write(65)
выведетA
в поток;print(65)
выведет65
в поток. - person Aleks G   schedule 05.09.2013print(65)
возьмет символ Unicode 65 (0x41), преобразует его, используя кодировку символов по умолчанию, в байты, а затем запишет эти байты. Если это UTF-8, это будетA
. Фактически, во многих кодировках символов это будетA
- person Lee Meador   schedule 05.09.2013print()
принимает типы char или String в качестве параметров. Это Юникод.write()
принимает типы byte или byte[] в качестве параметров. Это просто сырые кусочки. Юникод можно расшифровать. Это заканчивается одним или несколькими байтами. Эти байты могут быть закодированы обратно в Unicode.write(byte)
просто передает биты в файл.print(int)
считает, что int является значением Unicode, декодирует его в байт или байты и передает этот байт или эти байты в файл. - person Lee Meador   schedule 05.09.2013print(0x0391)
преобразует этот символ Unicode (греческая заглавная буква) в байты. Я не знаю, что это за байты, но могу предположить, что это два байта во многих кодировках. Эти два байта, если я прав, пойдут в файл. - person Lee Meador   schedule 05.09.2013