RandomAccessFile.seek与skipBytes

ibatsiSpring 2010-10-26 10:36:02
代码不贴了,很简单。

使用这个类RandomAccessFile,向文件写入两个整数100和200,写入没有问题。

读取也没有问题。

只有一点不解,使用raf.seek(0)或者是raf.seek(4),可以读出100以及200。

但是raf.seek(1)、raf.seek(2)、raf.seek(3)就读取出很多的数字。。。。

比如设置raf.seek(1)后,在读取出来的值就是:25600。

使用skipBytes也是一样。

这是为什么?

麻烦详细点,不要复制JDK API。我都看过才来问的。

顺便解释一下seek与skipByte他们之间的却别!
...全文
382 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphasong 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 ibatsispring 的回复:]
麻烦详细点,不要复制JDK API。我都看过才来问的。
[/Quote]
不会给你贴API的,因为你现在还不应该看API那么高深的东西,你现在应该看的是JAVA语言基础
houjin_cn 2010-10-26
  • 打赏
  • 举报
回复
1)seek 是直接跳到文件的指定位置,与当前位置无关;
2)skipByte 是在当前位置的基础上再跳过指定字节数;
3) 你的文件应该像这样的(用16进制编辑器):
00 00 00 64 00 00 00 C8

00 00 00 64=100 ; 00 00 00 C8=200; 高位在前
seek(1) 读到的就是 00 00 64 00 = 25600


zdjray 2010-10-26
  • 打赏
  • 举报
回复
raf.seek(0)读第一个数(显而易见)
raf.seek(4)读第二个数(整数写入时是4个字节,往后走4字节所以能读到正确的)
假如是raf.seek(1)或其他,如楼上解释

62,614

社区成员

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

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