2

您好,我有以下代码:

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 字节?

谢谢

4

2 回答 2

8

因为你只写了一个字节给它。请参阅Javadoc以了解DataOutputStream.write(int).它写的byte,不是int.

于 2012-11-28T08:20:09.357 回答
4

虽然该DataOutputStream.write方法接受一个int参数,但它实际上只写入该参数的低 8 位。所以你实际上只写了一个字节......因此文件是一个字节长。

如果你想写整个int你应该使用该writeInt(int)方法。


这种奇怪的根本原因是(我相信)该write(int)方法被定义为与该方法一致,OutputStream.write(int)而该方法又被定义为与 一致InputStream.read()InputStream.read()读取 abyte并将其作为int... 返回,其值-1用于指示流结束条件。

于 2012-11-28T08:20:53.727 回答