大家好:
这是本人第一次问问题,希望大家多多帮忙。
情况:有500M的一个文件,假设我要读取的东西在文件的内容在文件的中后部,那我要怎么处理才能保证速度?
我自己尝试了很多,没有发现好方法。
BufferedReader中的readLine()也要文件头开始一行一行读起,这样很慢。我知道有skip()这样的函数,但是我没办法确定我要跳过多少个字符,所以用不来,我想知道有个()的函数是怎么用的,是不是可以再某处进行标记?如果有成功运行的源码希望能贴出来研究下。
nio包也试过了,速度也不怎么样。
PS:不要说什么把数据存入DB这样的建议啊,要是这样的话就不用在这里问了。就是不能用DB。
解决得好会追加分数的,我手上有308分可以追加。
这是本人第一次问问题,希望大家多多帮忙。
情况:有500M的一个文件,假设我要读取的东西在文件的内容在文件的中后部,那我要怎么处理才能保证速度?
我自己尝试了很多,没有发现好方法。
BufferedReader中的readLine()也要文件头开始一行一行读起,这样很慢。我知道有skip()这样的函数,但是我没办法确定我要跳过多少个字符,所以用不来,我想知道有个()的函数是怎么用的,是不是可以再某处进行标记?如果有成功运行的源码希望能贴出来研究下。
nio包也试过了,速度也不怎么样。
PS:不要说什么把数据存入DB这样的建议啊,要是这样的话就不用在这里问了。就是不能用DB。
解决得好会追加分数的,我手上有308分可以追加。
能不能把500M的文件切割成100个5M的文件,然后挨个搜索。这样就没必要每次都对500M的文件进行操作了.
af
afggs
bc
bccccc
……
k
kjjd
……我要读取出所有以“k”开头的数据,所以才有了上面的需求。
把五百兆的文件通过lucene(搜索引挚)切分成若干个索引文件并建好索引。
然后通过lucence的搜索引挚技术对数据进行查找。
这样当第一次查找建立索引文件时可能会有点慢(但也不会慢很多,我用1G多的数据测试过也在五秒以内)。现在计算机硬件配置都很高,所以不需要担心内存不够用的情况.