【发布时间】:2015-03-23 11:53:48
【问题描述】:
我需要在一个非常大的文本文件 (5-10GB) 中找到一个子字符串。对于这种大小的文件,您有什么建议可以轻松快速地处理?
更新: 该算法在文件中搜索一个单词,但在我看来 vryat 它可以轻松处理大文件:
File textFile = new File("text.txt");
BufferedReader fileOut = new BufferedReader(new FileReader( textFile ) );
String s;
int a = 1;
while((s = fileOut.readLine()) != null) {
if(s.contains("findword"))
System.out.println(a + ": " + s);
a++;
}
fileOut.close();
【问题讨论】:
-
您会只找到一个子字符串然后完成吗?还是会反复从文本中提取字符串?
-
@HovercraftFullOfEels 我需要在文件中找到一个单词并输出一个包含该单词的字符串。例如 myWordWhatIneed file.txt,程序会遍历包含该单词的文件和输出行。之后提供重新输入单词文件和查看位置
-
我建议使用 Lucene,所以索引文件,然后做任何你想做的事。它会比其他 thigs 快得多,并且您将能够做比仅包含更高级的事情。
-
就像副本说的那样,您在这里受到硬盘读取速度的限制。除非您更改方法(通过某种方式将文件预先编入索引或在内存中),否则任何代码都无济于事。