可能重复:
do searching in a very big ARPA file in a very short time in java如何在java中使用特定格式在非常大的文件中搜索字符串?
我的文件的格式:
\ DATA \
的ngram 1 = 19
的ngram 2 = 234
的ngram 3 = 1013
\ 1-克:
-1.7132 puluh -3.8008
-1.9782 -3.8368萨图马雷
\ 2-克:
-1.5403寻找及体验dua -1.0560
-3.1626 dalam ini 0.0000
\ 3-克:
-1.8726 ITU担迪迦
-1.9654 ITU担untuk
\端\
正如你可以看到我在1的ngram行数, 2和3.不需要读取整个文件。如果一个输入字符串是一个单词的字符串,程序可以在\ 1-grams:part中搜索。如果输入字符串是双字串,则程序可以在\ 2-grams中搜索:部分等等。最后,如果程序在文件中找到输入字符串,它必须返回位于字符串左侧和右侧的两个数字。此外,我不得不说,文件的每个部分已经排序。我相信我不必完全读取文件,并使用索引文件不能解决我的问题。这些方法需要很长时间,我的讲师说,搜索必须在不到1分钟的时间内完成,以处理如此庞大的文件。我认为最好的办法是找到一种跳转到特定行而不是文件字节的方式,但我不知道如何才能做到。如果有人能帮助我解决我的问题,那将会很棒。
我的文件差不多是800MB。我发现使用BufferedReader是一种非常快速读取文件的好方法,但是当我读取这样一个大文件并逐行放入数组时,需要超过30分钟的时间。
这功课吗? (你提到一个演讲)。你试过什么了?你可以编辑你的问题,并显示你到目前为止尝试过的一些代码。 – jmq 2011-02-27 05:28:03
这是一样的问题http://stackoverflow.com/questions/5127640/do-searching-in-a-very-big-arpa-file-in-a-very-short-time-in-java – andersoj 2011-02-27 05:31:11
那么除非你有一个明确定义的结构和数据字节,否则你需要扫描整个文件..如果以任何方式记录文件中的字节位置并将其索引到文件顶部,则无法AFAIK .. – 2011-02-27 05:33:57