Writer
объекты (включая PrintWriter
) предназначены специально для вывода символьных данных. Звучит так, будто вы хотите OutputStream
вместо Writer
здесь.
Откуда взялся ваш PrintWriter
? Если он был создан путем обертывания какого-либо OutputStream
с OutputStreamWriter
и последующего обтекания с PrintWriter
, тогда вам следует просто использовать оригинальный метод write(byte[] b)
из исходного OutputStream
, а не пытаться Writer
.
Если вы хотите смешать вывод символов и вывод байтов, вам может потребоваться использовать String.getBytes()
. Проверьте этот пример:
OutputStream o = this.conn.getOutputStream(); // Based on your comment
String s = "Hello, world!";
byte[] b = ...; // These are the raw bytes that you want to write
o.write(s.getBytes("UTF-8"));
o.write(b);
(Конечно, это будет работать, только если система, которая читает ваш вывод, понимает, что вы пишете смесь символов и необработанных байтов, и знает, как обрабатывать смешанные данные, которые вы отправляете.)