FileOutputStream写方法(int)java

时间:2013-07-28 08:47:26

标签: java input stream writer

从API开始,方法write(int byte)应该采用一个表示字节的int,这样当EOF出现时它可以返回-1。 但是可以做以下事情:

FileOutputStream fi = new FileOutputStream(file);
    fi.write(100000);

我预计不会编译,因为数字超出了字节范围。 JVM如何解释它? 提前谢谢。

2 个答案:

答案 0 :(得分:5)

来自OutputStream.write(int) doc:

  

将指定的字节写入此输出流。写入的一般合同是将一个字节写入输出流。要写入的字节是参数b的八个低位。 b 的24个高位被忽略。

强调我的。

请注意,该方法需要int。由于 100000 是一个有效的整数字面值,因此无需编译。

答案 1 :(得分:1)

你在哪里读到有关EOF和-1的部分?

method just writes one byte,由于某种原因作为int传递。

  

将指定的字节写入此输出流。写入的一般合同是将一个字节写入输出流。要写入的字节是参数b的八个低位。 b的24个高位被忽略。


  

我预计不会编译,因为数字超出了字节范围

不,这样编译好了。编译器只查找int。 (A long无法编译。)

除了最低8位之外的所有内容都将被忽略。