A Writer
записывает символы, поэтому двоичные данные, которые попадают в файл, зависят от кодировки.
Например, если у вас 16-битная кодировка, такая как UTF-16 тогда будет дополнительный нулевой байт для каждого байта ASCII:
public class TestWriter
{
public static void main(String[] args)
throws UnsupportedEncodingException
{
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final OutputStreamWriter out = new OutputStreamWriter(baos, "UTF-16");
final PrintWriter writer = new PrintWriter(out);
writer.printf("abc");
writer.close();
for (final byte b : baos.toByteArray())
{
System.out.printf("0x%02x ", b);
}
System.out.printf("\n");
}
}
печатает 0xfe 0xff 0x00 0x61 0x00 0x62 0x00 0x63
.