2012-11-28 38 views
2

你好,我有以下代码:OutputSteam.write(int)仅将1个字节写入文件?

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

请参阅[DataOutputStream write(int)](http://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html#write(int)) – jlordo

回答

4

虽然DataOutputStream.write方法需要一个int说法,它实际上只写这样的说法的底部8位。所以你实际上只写了一个字节......因此这个文件只有一个字节。

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


的基本原因是奇异(I相信)的write(int)方法被定义为与OutputStream.write(int)这反过来定义为与InputStream.read()一致一致。 InputStream.read()读取一个byte并将其作为int ...返回,其值-1用于指示流结束条件。

8

因为你只写了一个字节。看到JavadocDataOutputStream.write(int).它写入一个byte,不是int.