java - 如果大小大于 ~10MB,则无法读取整个文本文件

标签 java regex file text bufferedreader

我正在尝试使用 Java 逐行读取文本文件并使用正则表达式搜索特殊行。问题是我的文件大约有 28MB。其中有 198546 行,但在大约 110000 行之后,我的脚本没有任何异常地搜索并完成脚本。我认为这与 BufferedReader 大小有关。

这是我的代码的一部分:

try {
    BufferedReader br = new BufferedReader(new FileReader(logsArrayList.get(i).toString()));
    String strLine;
    number = 0;
    while ((strLine = br.readLine()) != null) {
        if ((lineNumber % 2) == 0) {
            firstLine = strLine;
        }
        //control the regex 
        Matcher m = runRegex.matcher(strLine);
        if (((lineNumber % 2) != 0) && m.find()) {
            number++;
            stringList.add(number + ") " + firstLine);
            stringList.add(strLine);
            logList.add(logsArrayList.get(i).toString());
            logList.add(logsArrayList.get(i).toString());
        }
        publish(stringList.size());
        lineNumber++;
    }
        br.close();
} catch (Exception e) {
    System.err.println("Error: " + e.getMessage());
}

那么有人知道为什么我无法读取整个文件吗?它与 BufferedReader 大小有关吗?如果是,我该如何处理这个问题?

感谢任何帮助、想法或示例。

编辑:脚本不会引发异常。

最佳答案

如果您对堆栈大小有任何问题,那么您应该增加堆大小

Just increase the heap size of Java

java -Xmx250m

If you running your project from IDE set -Xmx250m in arguments.

250m is 250mb

increasing vm size

关于java - 如果大小大于 ~10MB,则无法读取整个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20496241/

相关文章:

c++ - 在 Qt 中处理文件

c - 抓取windows文件信息

java - org.springframework.web.HttpRequestMethodNotSupportedException : Request method 'POST' is not supported

c# - 正则表达式匹配空格之间的单词

javascript - 使用简单的正则表达式验证浏览器上传文件名和扩展名

java - 如何对模式使用多个分隔符

java - 无法使用 Jackson 和 Spring Boot 实现自定义 JSON 序列化器

java - Java新手,已经出错了

java - 如何更改Wildfly服务器的IP地址

bash - 根据另一个文件中的顺序对一个文件中的行进行排序