您好我有以下代码:
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个字节?
谢谢
答案 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
用于指示流末尾条件。