OutputStream.write(int)只写1个字节到文件?

时间:2012-11-28 08:19:09

标签: java io

您好我有以下代码:

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

谢谢

2 个答案:

答案 0 :(得分:8)

因为你只写了一个字节。请参阅DataOutputStream.write(int). byte,它会写int.而不是{{1}}

答案 1 :(得分:4)

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

如果您想编写整个int,则应使用writeInt(int)方法。


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