我希望能夠在以後的任何時間打開一個(非常大的)文件並從任意點讀取數據,而不會將整個內容保留在內存中。如何讓文件保持打開狀態以便讀取
這可能嗎?
我想打開一個文件的句柄,沒有別的東西會讀取/寫入這個文件,並且能夠從任何給定的偏移量&長度以後抓取數據,而無需再次在磁盤上搜索文件。
我本以爲會有某種
1, open handle to file
2, create reader
3, skip reader to X
4, read for Y
5, reset reader to 0
6, return to step 3
起初它似乎像BufferedReader.mark
將是我後,但該文檔表明,如果我mark, skip, read, reset
從我這裏標明的內容,以在哪裏我跳過了,將被保存在內存中?
從文檔,
限制上而仍然保持 標記讀取的字符數。嘗試在讀取 字符之後重置流,直至達到此限制或超出此限制可能會失敗。比輸入緩衝區大小更大的限制值 將導致分配的新緩衝區爲 ,其大小不小於限制。因此應謹慎使用較大的值 。
它說「讀」,所以也許如果我跳過,它不會計入這個限制(這是有道理的),但我可能讀了很多,所以看起來這個新分配的輸入緩衝區可能變得相當大。我不希望這種情況發生...
有沒有更好的方法來解決這個問題?
聽起來你想使用RandomAccessFile。 – 2013-02-21 02:04:30