我使用包裝在LineNumberReader中的FileReader來索引大文本文件以便稍後快速訪問。麻煩是我似乎無法找到直接讀取特定行號的方法。 BufferedReader支持skip()函數,但我需要將行號轉換爲一個字節偏移量(或首先索引字節偏移量)。如何將文件的行號轉換爲字節偏移量(或者使用BufferedReader獲取每行開頭的字節偏移量)?
我使用RandomAccessFile對它進行了一次破解,並且在它的工作過程中,它在初始索引過程中非常緩慢。 BufferedReader的速度是太棒了,但是......好吧,你看到了問題。
一些關鍵信息:
- 文件可以是
- 它存儲在Android上的內部文件系統的任何大小(目前爲35000線)(通過getFilesDir()是精確的)
- 的格式是不是固定寬度,不幸的是(因此需要按行讀取)
任何我DEAS?
如果線路沒有固定長度,也沒有直接的方法從行號以字節位置獲得不跟蹤你正在閱讀。當然,除非您在閱讀時創建索引,否則會跟蹤字節位置和行號(正在跟蹤,正如我所提到的)之間的關係。 – 2011-06-17 02:50:26
在初始索引過程中跟蹤字節位置時我完全沒問題,但我該怎麼做?我無法找到一種方法來獲取每個readline()後的當前偏移量,而不使用RandomAccessFile。 – wirbly 2011-06-17 03:05:54
@wirbly使用RandomAccessFile * once *來索引文件,然後在文件中打開一個索引文件和'writeInt(pos)'每個偏移量。 – ironchefpython 2011-06-17 03:22:35