RandomAccessFile的问题,接上一贴

阳明 to life 2011-10-11 07:07:37
http://topic.csdn.net/u/20111010/21/f15faa02-99b1-4812-a7bd-005ed3372cf7.html
以前了解的RandomAccessFile好像就是可读可写的功能,然后有文件指针什么的,还可以写简单数据类型
上一贴坦克前辈也提到RandomAccessFile替换byte数组,不太了解,再看帖请教
...全文
228 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
阳明 to life 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shine333 的回复:]

引用 7 楼 zhouyuqwert 的回复:

如果数字不同,文件需要手工或者在程序里面清空

这个说的数字是指的什么 清空什么
文件指针什么的都是native方法,也看不到源码怎么搞的 但是每次启动文件指针好像都是从0开始

你没理解,
假设文件里面存的是
00010011,代表4,7,8存在
下次换成了新的数据,只有1存在,
如果你不清空,下次这个数字还在,你直接|操……
[/Quote]
噢 了解了 谢谢了~
shine333 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhouyuqwert 的回复:]

如果数字不同,文件需要手工或者在程序里面清空

这个说的数字是指的什么 清空什么
文件指针什么的都是native方法,也看不到源码怎么搞的 但是每次启动文件指针好像都是从0开始
[/Quote]
你没理解,
假设文件里面存的是
00010011,代表4,7,8存在
下次换成了新的数据,只有1存在,
如果你不清空,下次这个数字还在,你直接|操作的时候,变成了
10010011,貌似是1,4,7,8存在
阳明 to life 2011-10-12
  • 打赏
  • 举报
回复
如果数字不同,文件需要手工或者在程序里面清空

这个说的数字是指的什么 清空什么
文件指针什么的都是native方法,也看不到源码怎么搞的 但是每次启动文件指针好像都是从0开始
阳明 to life 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shine333 的回复:]

本来我写的程序就是RandomAccessFile的,后来发现内存够用,就直接用byte[]了。
RAF的话,有几点注意:
1 seek(pos),可以到文件末,读出来可能是-1,代表这个字节不存在,处理的时候要注意
2 就是读出某个byte(可以存放8个数字对应的flag)之后,再存入这个字节到文件的时候,需要重新seek(pos),否则会写入到pos+1
3 每次运行,如果数字不同,……
[/Quote]
第三点没理解
RandomAccessFile raf = new RandomAccessFile("result.txt","r");

raf.seek(50);

System.out.println(raf.read());

raf.close();

第一次读的,然后把seek去掉再启动程序读得不同额 开始从头读的
softroad 2011-10-12
  • 打赏
  • 举报
回复
学习了。
shine333 2011-10-12
  • 打赏
  • 举报
回复
鉴于1,2两点,再加上disk i/o本来就比内存慢(以数量级计),就直接用内存了。
关于昨天说的byte[][][]和 byte[]直接内存VS性能的权衡,貌似直接byte[]也不慢
shine333 2011-10-12
  • 打赏
  • 举报
回复
本来我写的程序就是RandomAccessFile的,后来发现内存够用,就直接用byte[]了。
RAF的话,有几点注意:
1 seek(pos),可以到文件末,读出来可能是-1,代表这个字节不存在,处理的时候要注意
2 就是读出某个byte(可以存放8个数字对应的flag)之后,再存入这个字节到文件的时候,需要重新seek(pos),否则会写入到pos+1
3 每次运行,如果数字不同,文件需要手工或者在程序里面清空。我之前就在这上面吃了大亏,想了半天没想明白
阳明 to life 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bearkin 的回复:]

....我想乐高坦克的意思是让你利用seek函数来实现你上个帖子中的那个功能 不必要将整个文件内容全部读取进来..
[/Quote]
噢。。。是这个意思啊- - 我还以为说用RandomAccessFile可以减少字节的什么功能,原来他的意思是把东西放在外存的
。。。好吧,那就当散分吧~等坦克前辈出来确认下就结贴了
BearKin 2011-10-11
  • 打赏
  • 举报
回复
....我想乐高坦克的意思是让你利用seek函数来实现你上个帖子中的那个功能 不必要将整个文件内容全部读取进来..

62,614

社区成员

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

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