我希望能够在以后的任何时间打开一个(非常大的)文件并从任意点读取数据,而不会将整个内容保留在内存中。如何让文件保持打开状态以便读取
这可能吗?
我想打开一个文件的句柄,没有别的东西会读取/写入这个文件,并且能够从任何给定的偏移量&长度以后抓取数据,而无需再次在磁盘上搜索文件。
我本以为会有某种
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