作者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)
推 proudszl:Sorry 小弟第一次用這method...抱歉 07/22 23:33
推 proudszl:每行都不同長度 但是檔案內容有點多..@@ 1500行左右 07/22 23:39
推 slalala:1500程式大概3秒內就跑完 07/22 23:59
推 proudszl:不過每行都不一樣長 要如何得知某行是從第幾個位元開始? 07/23 00:09
推 proudszl:我笨了 請忽略我上面那行問題 囧 07/23 00:11
推 slalala:實話是 我沒時做過CVS 不過我認為可以用patterm matcher 07/23 00:49
推 neverfly:印象中java好像有把excel的csv當資料庫用的API 07/23 01:05
推 slalala:cvs單純多了 07/23 01:33
推 TonyQ:nerverfly , 那是 Text Driver , 不是java only . 07/23 03:51
→ TonyQ:gooogle "text drier connectionstring" 07/23 03:53
→ superlubu:1500 行就全讀進好了, 不用搞 RandomAccess.... 07/23 09:01
推 qrtt1:csv != cvs 07/23 09:07
推 slalala:我打錯啦啦= =是csv 07/23 13:30
→ slalala:以逗號分隔 真的很單純了 07/23 13:31