我正在尝试逐行读取文本文件并使用正则表达式搜索特殊行。问题是我的文件大约是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
大小有关,如果是,我该如何处理这个问题?
感谢任何帮助,想法或示例。
编辑:脚本不会抛出异常。
答案 0 :(得分:1)
如果您对堆栈大小有任何问题,那么您应该增加堆大小
Just increase the heap size of Java java -Xmx250m If you running your project from IDE set -Xmx250m in arguments. 250m is 250mb
答案 1 :(得分:0)
如果您使用的是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;) {
//...
}
}