Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';如果大小大于~10MB,则无法读取整个文本文件_Java_Regex_File_Text_Bufferedreader - Fatal编程技术网

Java Can';如果大小大于~10MB,则无法读取整个文本文件

Java Can';如果大小大于~10MB,则无法读取整个文本文件,java,regex,file,text,bufferedreader,Java,Regex,File,Text,Bufferedreader,我试图用Java逐行读取文本文件,并用正则表达式搜索特殊的行。问题是我的文件大约是28MB。其中有198546行,但是在大约110000行之后,我的脚本没有任何例外地搜索并完成脚本。我认为这与BufferedReader大小有关 这是我的代码的一部分: try { BufferedReader br = new BufferedReader(new FileReader(logsArrayList.get(i).toString())); String strLine;

我试图用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
大小有关吗?如果是,我如何处理这个问题

任何帮助、想法或示例都将不胜感激


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

如果您使用的是Java 7,可以通过以下方式执行:

try (BufferedReader br = Files.newBufferedReader(Paths.get("path/to/your/file.txt"), StandardCharsets.UTF_8)) {
    for (String line = null; (line = br.readLine()) != null;) {
        //...
    }

}

如果堆栈大小有任何问题,则应增加堆大小


它是否引发任何异常?它是否引发任何错误或出现任何堆栈溢出。请将堆栈跟踪与编解码器放在一起。您可以发布更多代码吗?此外,这一行是重复的(
logList.add(logsArrayList.get(i).toString())
),您可能应该删除其中一行。有什么例外?您可能只需要增加VM大小。您应该删除try-catch块以显示异常。你不应该接受这样的例外情况。
Just increase the heap size of Java

java -Xmx250m

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

250m is 250mb