RandomAccessFile中的seek方法是什么意思啊???

hp8252191 2012-07-20 10:25:04
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)该怎么解释额
...全文
2427 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_19241589 2015-04-01
  • 打赏
  • 举报
回复
看了 这篇论坛,懂了!! 正在研究断点续传。。。。。4楼说法正确
hanzhe999_ 2013-04-10
  • 打赏
  • 举报
回复
为什么是ran.seek(j*4)呢?
hp8252191 2012-07-20
  • 打赏
  • 举报
回复
有点懂了,灰常谢谢楼上的锅锅些啊
nmyangym 2012-07-20
  • 打赏
  • 举报
回复
就是确定要读入或写入的位置.
读写的时候指针自动下移. 楼主是倒着往外读,所以每次要前移位置. 位置确定就是 j*4,乘4是一个int数占4个字节。
楼主要是在写入前加一句:
long pos=ran.length();    //取文件长度。
ran.seek(pos); //定位在文件尾。

则每次运行程序的时候,就从文件末尾追加了。
brightyq 2012-07-20
  • 打赏
  • 举报
回复
说错了,seek(100)的意思应该是,设置到此文件开头的文件指针偏移量,即从第100个字节的位置开始读写。seek(0)就是从文件开头开始读写。
其效果不高,常用skipBytes(int n) 来实现跳过一段的功能,它的用法就是上面我刚说的。
brightyq 2012-07-20
  • 打赏
  • 举报
回复
简单讲就是跳过一段,直接从下一个位置开始读写。
比如,读写文件时,是从第一位置开始,执行了seek(100)的话,则跳过100个字节,从第101个字节开始读写。
hp8252191 2012-07-20
  • 打赏
  • 举报
回复
...查了,没看得好懂,只晓得大概好像是以各种变量类型的单位长度读取的[Quote=引用 1 楼 的回复:]
public void seek(long pos)
throws IOException设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。偏移量的设置可能会超出文件末尾。偏移量的设置超出文件末尾不会改变文件的长度。只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。

参数:
pos - 从文件开头以字节为单位测量的偏移量位置,在该位置设置文……
[/Quote]
snepajj 2012-07-20
  • 打赏
  • 举报
回复
public void seek(long pos)
throws IOException设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。偏移量的设置可能会超出文件末尾。偏移量的设置超出文件末尾不会改变文件的长度。只有在偏移量的设置超出文件末尾的情况下对文件进行写入才会更改其长度。

参数:
pos - 从文件开头以字节为单位测量的偏移量位置,在该位置设置文件指针。
抛出:
IOException - 如果 pos 小于 0 或者发生 I/O 错误。

要学会查API文档
wangdong20 2012-07-20
  • 打赏
  • 举报
回复
查看Java API很多不明白的东西在上面可以找到
licip 2012-07-20
  • 打赏
  • 举报
回复
+1[Quote=引用 3 楼 的回复:]
简单讲就是跳过一段,直接从下一个位置开始读写。
比如,读写文件时,是从第一位置开始,执行了seek(100)的话,则跳过100个字节,从第101个字节开始读写。
[/Quote]

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧