您好,我有以下代码:
int i=12345;
DataOutputStream dos=new DataOutputStream(new FileOutputStream("Raw.txt"));
dos.write(i);
dos.close();
System.out.println(new File("Raw.txt").length());
文件大小报告为 1 个字节。为什么整数长度为 4 字节时不是 4 字节?
谢谢
因为你只写了一个字节给它。请参阅Javadoc以了解DataOutputStream.write(int).
它写的byte,
不是int.
虽然该DataOutputStream.write
方法接受一个int
参数,但它实际上只写入该参数的低 8 位。所以你实际上只写了一个字节......因此文件是一个字节长。
如果你想写整个int
你应该使用该writeInt(int)
方法。
这种奇怪的根本原因是(我相信)该write(int)
方法被定义为与该方法一致,OutputStream.write(int)
而该方法又被定义为与 一致InputStream.read()
。 InputStream.read()
读取 abyte
并将其作为int
... 返回,其值-1
用于指示流结束条件。