public class IOTest2 { public static void main(String[] args){
int a[]={1,2,3,4,5,6,7,8,9,10};
try{
RandomAccessFile ran = new RandomAccessFile("E:\\tom.dat","rw");
for(int i=0;i<a.length;i++){
ran.writeInt(a[i]);
}

for(int j=a.length-1;j>=0;j--){
ran.seek(j*4);
System.out.print(ran.readInt()+" ");
}

}catch (FileNotFoundException e) {
System.out.println("文件写入失败!");
} catch (IOException e) {
System.out.println("文件读出失败!");
} }}
RandomAccessFile类在文档中看的不是很懂,那个seek方法也没看懂,代码中的ran.seek(j*4)该怎么解释额

解决方案 »

  1.   

    public void seek(long pos)
              throws IOException设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。偏移量的设置可能会超出文件末尾。偏移量的设置超出文件末尾不会改变文件的长度。只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。 参数:
    pos - 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。 
    抛出: 
    IOException - 如果 pos 小于 0 或者发生 I/O 错误。要学会查API文档
      

  2.   

    简单讲就是跳过一段,直接从下一个位置开始读写。
    比如,读写文件时,是从第一位置开始,执行了seek(100)的话,则跳过100个字节,从第101个字节开始读写。
      

  3.   

    说错了,seek(100)的意思应该是,设置到此文件开头的文件指针偏移量,即从第100个字节的位置开始读写。seek(0)就是从文件开头开始读写。
    其效果不高,常用skipBytes(int n) 来实现跳过一段的功能,它的用法就是上面我刚说的。
      

  4.   

    就是确定要读入或写入的位置.
    读写的时候指针自动下移. 楼主是倒着往外读,所以每次要前移位置. 位置确定就是 j*4,乘4是一个int数占4个字节。
    楼主要是在写入前加一句:
    long pos=ran.length();    //取文件长度。
    ran.seek(pos);          //定位在文件尾。则每次运行程序的时候,就从文件末尾追加了。
      

  5.   

    查看Java API很多不明白的东西在上面可以找到