あなたができる最善のことは、あなたがそのような何かを行うことによって、あなたのパターンに到達するまでのラインで、あなたのファイルの行を読むことです:
try (BufferedReader br = new BufferedReader(
new InputStreamReader(new File(file), charset))
) {
String line;
boolean start = false;
// Read the file line by line
while ((line = br.readLine()) != null) {
if (start) {
// Here the start pattern has been found already
if (line.equals("{/AAAA}")) {
// The end pattern has been reached so we stop reading the file
break;
}
// The line is not the end pattern so we treat it
doSomething(line);
} else {
// Here we did not find the start pattern yet
// so we check if the line is the start pattern
start = line.equals("{AAAA}");
}
}
}
あなたが最後のパターンこれに到達するまで、あなただけのファイルを読んで、この方法ファイル全体を読むよりも効率的です。ループは、より適切と思わながら、Javaの8またはそれ以前の、標準で
try (Stream<String> lines = Files.lines(path, UTF_8)) {
result = lines.dropWhile(line -> !line.equals("{AAAA}")
.takeWhile(line -> !line.equals("{/AAAA}")
.collect(toList());
}
:(まだベータ版)のJava 9で
あなたが探しているものが見つかるまで、ファイルを1行ずつ読みます。 – assylias