大家好:
      这是本人第一次问问题,希望大家多多帮忙。
      情况:有500M的一个文件,假设我要读取的东西在文件的内容在文件的中后部,那我要怎么处理才能保证速度?
      我自己尝试了很多,没有发现好方法。
      BufferedReader中的readLine()也要文件头开始一行一行读起,这样很慢。我知道有skip()这样的函数,但是我没办法确定我要跳过多少个字符,所以用不来,我想知道有个()的函数是怎么用的,是不是可以再某处进行标记?如果有成功运行的源码希望能贴出来研究下。
      nio包也试过了,速度也不怎么样。
      PS:不要说什么把数据存入DB这样的建议啊,要是这样的话就不用在这里问了。就是不能用DB。
     解决得好会追加分数的,我手上有308分可以追加。

解决方案 »

  1.   

    Java 初学者,仅提供思路:
    能不能把500M的文件切割成100个5M的文件,然后挨个搜索。这样就没必要每次都对500M的文件进行操作了.
      

  2.   

    就是txt文件。现在里面的数据已经按照英文字母的顺序排序好了(举个例子):
    af
    afggs
    bc
    bccccc
    ……
    k
    kjjd
    ……我要读取出所有以“k”开头的数据,所以才有了上面的需求。
      

  3.   

    我提一个建议,如果不正确,请指定:
     把五百兆的文件通过lucene(搜索引挚)切分成若干个索引文件并建好索引。
     然后通过lucence的搜索引挚技术对数据进行查找。
     这样当第一次查找建立索引文件时可能会有点慢(但也不会慢很多,我用1G多的数据测试过也在五秒以内)。现在计算机硬件配置都很高,所以不需要担心内存不够用的情况.
      

  4.   

    lucene是一个开源的搜索引挚技术,你在网上可以下到源码。对大数据量查找非常适用。
      

  5.   

    lucene之前做全文搜索时用过,速度是挺快的,“bart1988”的意见我可以再尝试下,我其实还是希望通过自己的方法来解决大文件读取问题。不过还是谢谢你啊。