[Java] 纯文本查看 复制代码
FileOutputStream fos = new FileOutputStream("ioTest\\test2.txt");
fos.write(-48);
fos.write(257);
fos.close();
上面的代码实际向文件写入了什么呢?
write方法虽然传的参数是一个int型,但是实际有效的只有一个字节,而int型长度为4个字节,所以java在实际写入时会将前面3个字节去掉,只存最后一个字节的数据,如上面 fos.write(-48);,(int)-48 用二进制补码表示为11111111 11111111 11111111 11010000(原码取反加一),舍弃掉前面24位,实际存的是后面8位,用十进制表示为208。
同理 fos.write(257); 257因为是正数,所以反码和本身一样,为 00000000 00000000 00000001 00000001 ,舍弃前面24位,所以最后写入文件的是 1 。 |