RandomAccessFile中的seek方法是什么意思啊???
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)该怎么解释额 --------------------编程问答-------------------- public void seek(long pos)
throws IOException设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。偏移量的设置可能会超出文件末尾。偏移量的设置超出文件末尾不会改变文件的长度。只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。
参数:
pos - 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。
抛出:
IOException - 如果 pos 小于 0 或者发生 I/O 错误。
要学会查API文档 --------------------编程问答-------------------- ...查了,没看得好懂,只晓得大概好像是以各种变量类型的单位长度读取的 --------------------编程问答-------------------- 简单讲就是跳过一段,直接从下一个位置开始读写。
比如,读写文件时,是从第一位置开始,执行了seek(100)的话,则跳过100个字节,从第101个字节开始读写。 --------------------编程问答-------------------- 说错了,seek(100)的意思应该是,设置到此文件开头的文件指针偏移量,即从第100个字节的位置开始读写。seek(0)就是从文件开头开始读写。
其效果不高,常用skipBytes(int n) 来实现跳过一段的功能,它的用法就是上面我刚说的。 --------------------编程问答-------------------- 就是确定要读入或写入的位置.
读写的时候指针自动下移. 楼主是倒着往外读,所以每次要前移位置. 位置确定就是 j*4,乘4是一个int数占4个字节。
楼主要是在写入前加一句:
long pos=ran.length(); //取文件长度。
ran.seek(pos); //定位在文件尾。
则每次运行程序的时候,就从文件末尾追加了。 --------------------编程问答-------------------- 有点懂了,灰常谢谢楼上的锅锅些啊 --------------------编程问答-------------------- +1 --------------------编程问答-------------------- 查看Java API很多不明白的东西在上面可以找到 --------------------编程问答-------------------- 为什么是ran.seek(j*4)呢?
补充:Java , Java SE