Могу ли я использовать PrintWriter и BufferedOutputStream для одного и того же выходного потока? - PullRequest
1 голос
/ 15 октября 2011

Могу ли я использовать PrintWriter и BufferedOutputStream для одного и того же выходного потока?

Ситуация такова:

У меня есть программа SSLSocket, и я хочу иметь возможность передавать как строки, так иbyte [] через сокет в разные моменты времени без необходимости приведения byte [] к строке и т. д. Однако PrintWriter позволяет передавать только строки, а BufferedOutputStream - только байты.

Ответы [ 3 ]

6 голосов
/ 15 октября 2011

PrintWriter - это просто оболочка для оригинального OutputStream.BufferedOutputStream также является оболочкой для OutputStream.Таким образом, вы можете использовать оба.Почему бы и нет?

Единственное, что вам следует учитывать - вы должны быть осторожны при работе с потоком и записывающим устройством в многопоточной среде, поскольку вы можете получить непредсказуемый результат.

Класс java.io.Writer (Суперкласс для PrintWriter) использовать себя в качестве объекта блокировки.Так что вы также можете использовать его для синхронизации нескольких потоков.

2 голосов
/ 15 октября 2011

Все в порядке, но вы должны убедиться, что сбрасываете их в правильном порядке. Вы также можете использовать PrintWriter поверх BufferedOutputStream.

0 голосов
/ 15 октября 2011

Я бы использовал DataOutputStream (возможно, обёртывание BufferedOutputStream).Позволяет передавать byte[], int, double String и многие другие типы.Чтобы отправить byte[], вы можете сначала отправить длину как int или short.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...