对字节流的困惑

时间:2017-04-25 11:10:06

标签: java file stream

在阅读关于字节流的Java书籍时,我遇到了这个例子,本书用来显示两者之间的区别。使用的示例是数字199.根据该书,如果将此数字写入字符流,则将其写为三个不同的字符:0x31 0xC7 0x39。但如果将其写入字节流,则将其写为单值0xC7。我的疑问是,199不适合Java中的一个字节。那么,它不应该写成两个字节而不是一个? 199在二进制流中写为1字节还是2字节?

1 个答案:

答案 0 :(得分:1)

如果你调用OutputStream.write(int),这是一种写入单个字节的方法,它将忽略除最后八位之外的所有位。这意味着199-57的编写方式完全相同。对于那个特定的方法,这是它的工作方式,因为它只应该写一个字节。

如果你调用了其他一些方法,它将以不同的方式工作。例如,DataOutputStream.writeInt将整数写为四个字节,因为这就是该方法的用途。