Java Can';如果大小大于~10MB,则无法读取整个文本文件
我试图用Java逐行读取文本文件,并用正则表达式搜索特殊的行。问题是我的文件大约是28MB。其中有198546行,但是在大约110000行之后,我的脚本没有任何例外地搜索并完成脚本。我认为这与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;
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