FileInputStream 没有读取正确的值?
FileInputStream does not read the correct value?
public static void main(String[] args) {
try {
File f = new File("file.txt");
f.createNewFile();
OutputStream fos = new FileOutputStream(f);
InputStream fis = new FileInputStream(f);
fos.write(200);
System.out.println(fis.read());
} catch (Exception ex) {
Logger.getLogger(MySimple.class.getName()).log(Level.SEVERE, null, ex);
}
}
这会按预期打印 200。但是,当我写 2000 时,它显示为 208。请解释为什么它会这样?
方法调用 fos.write(200);
写入 字节 数据。当您写入 200 时,它会将其保存为 8 位值。
但是当您尝试写入 2000 时,它会忽略前 8 位以上的任何内容。 2000 的二进制是 0111 1101 0000
。但由于前 4 位丢失,写入的结果值为 1101 0000
或十进制的 208。
这些方法有点令人困惑,因为 write()
接受一个整数值,而 read()
returns 接受一个整数值。
public static void main(String[] args) {
try {
File f = new File("file.txt");
f.createNewFile();
OutputStream fos = new FileOutputStream(f);
InputStream fis = new FileInputStream(f);
fos.write(200);
System.out.println(fis.read());
} catch (Exception ex) {
Logger.getLogger(MySimple.class.getName()).log(Level.SEVERE, null, ex);
}
}
这会按预期打印 200。但是,当我写 2000 时,它显示为 208。请解释为什么它会这样?
方法调用 fos.write(200);
写入 字节 数据。当您写入 200 时,它会将其保存为 8 位值。
但是当您尝试写入 2000 时,它会忽略前 8 位以上的任何内容。 2000 的二进制是 0111 1101 0000
。但由于前 4 位丢失,写入的结果值为 1101 0000
或十进制的 208。
这些方法有点令人困惑,因为 write()
接受一个整数值,而 read()
returns 接受一个整数值。