作者superlubu (叔叔你人真好)
看板java
标题Re: [问题] 请问关於档案读取
时间Tue Jul 22 22:06:57 2008
※ 引述《proudszl (无声的喧哗)》之铭言:
: 不好意思 对於这位大大的话有些疑问@@
: 可以请问一下 RandomAccessFile 随机读取档案
: 不是只能直接读取档案的吗 ?
: 无法读取档案里面的细部内容吧~
... 什麽叫只能直接读取档案又不能读取档案里面的细部内容 ( ̄□ ̄|||)a
之前的站友都说得很清楚了,例如你的档案每行会固定有 10 bytes
你要读取第 100001 行,就是要由 (100001 - 1) * (10 + newline.length) bytes 开始读
那就用RandomAccessFile 然後 seek( (100001 - 1) * (10 + newline.length) )
从那边开始读进 10 bytes (查看 API)
要再读第 x 行就再去算一次就好了
如果你的档案每行都是不同长度... 那要麽你就用传统方法边读边丢边数
要麽就在档案最前面 maintain 一个 resolve table,纪录每一行的长度
一开始先读进你要 seek 那行的 position 在哪就好了。
: 还是RandomAccessFile有专门读取某行功能?
: 小弟愚昧 java刚起步 想多了解一下~~
: 麻烦知道的朋友替我解惑一下~
--
很多人以为 所以我要 其实我是个
我是
大学生 告诉大家 三十一岁的
怪叔叔
● ●/ ︿ ︿
/
劲\ <
劲 ●
ㄨ /\ ㄨ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.103.134.28
※ 编辑: superlubu 来自: 218.103.134.28 (07/22 22:08)
1F:推 proudszl:Sorry 小弟第一次用这method...抱歉 07/22 23:33
2F:推 proudszl:每行都不同长度 但是档案内容有点多..@@ 1500行左右 07/22 23:39
3F:推 slalala:1500程式大概3秒内就跑完 07/22 23:59
4F:推 proudszl:不过每行都不一样长 要如何得知某行是从第几个位元开始? 07/23 00:09
5F:推 proudszl:我笨了 请忽略我上面那行问题 囧 07/23 00:11
6F:推 slalala:实话是 我没时做过CVS 不过我认为可以用patterm matcher 07/23 00:49
7F:推 neverfly:印象中java好像有把excel的csv当资料库用的API 07/23 01:05
8F:推 slalala:cvs单纯多了 07/23 01:33
9F:推 TonyQ:nerverfly , 那是 Text Driver , 不是java only . 07/23 03:51
10F:→ TonyQ:gooogle "text drier connectionstring" 07/23 03:53
11F:→ superlubu:1500 行就全读进好了, 不用搞 RandomAccess.... 07/23 09:01
12F:推 qrtt1:csv != cvs 07/23 09:07
13F:推 slalala:我打错啦啦= =是csv 07/23 13:30
14F:→ slalala:以逗号分隔 真的很单纯了 07/23 13:31