public class Test
{
public static void main(String [] args)
{
try{
RandomAccessFile inout=new RandomAccessFile("word.txt","rw");
long l=inout.length();
System.out.println(l);
long g=inout.getFilePointer();
System.out.println(g);
//inout.seek(3);
g=inout.getFilePointer();
System.out.println(g);
int rd=inout.readInt();//问题
System.out.println(rd);
inout.close();
}
catch(FileNotFoundException ffe)
{
System.out.println("filenotfound");
}
catch(IOException ioe)
{
System.out.println("ioexception");
}
}
}
问题处我在程序中标注出来了,现在我word.txt文件里的数据是1234,但是我输出读到的rd的值是825373492,为什么会这样啊?
RandomAccessFile类中readInt()方法的返回值问题。
因为你以为的是文本文件,他以为的是二进制,他会读4个字节的数据,然后把他转换为int。在这里,你的数据是1234,作为文本,他们在文件中的表示比如说是ascii码,那么4个字节分别是31H,32H,33H,34H,如果你把十六进制数31323334H转换成十进制,你会发现,他的值就是825373492 ...