java BufferedWriter使用MSB 1写入字符
writer = new BufferedWriter(new OutputStreamWriter(System.out));
char[] test = new char[1];
test[0]=(char)128;
writer.write(test,0,1);
writer.flush();
使用此命令调用; java文件>;出去
然后用十六进制编辑器检查“out”,我希望在文件开头得到字节0x80,后面什么也没有。相反,我得到了0x3F。 通过使用不同的代码(即64),我得到了预期的十六进制0x40
# 1 楼答案
BufferedWriter
是一个面向字符的流,因此您写入的字节会被编码为您在文件中看到的不同内容。使用BufferedOutputStream
来处理这种类型的二进制数据# 2 楼答案
在本例中,OutputStreamWriter使用平台的默认字符编码将字符转换为字节。如果想在文件中看到0x80(128),请使用
new OutputStreamWriter(System.out, "ISO-8859-1");
# 3 楼答案
根据BufferedWriter的Java 6 API,它说,“如果没有缓冲,每次调用print()方法都会导致字符转换成字节,然后立即写入文件,这可能非常低效。”
欲了解更多信息,请访问the link