【问题标题】:Find substring in very big file(javaSE)在非常大的文件中查找子字符串(javaSE)
【发布时间】: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 快得多,并且您将能够做比仅包含更高级的事情。
  • 就像副本说的那样,您在这里受到硬盘读取速度的限制。除非您更改方法(通过某种方式将文件预先编入索引或在内存中),否则任何代码都无济于事。

标签: java regex substring


【解决方案1】:

提示:看看 Knuth-Morris-Pratt 算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    相关资源
    最近更新 更多