We already know from the previous problems that BufferedReader is very efficient for reading text files. Therefore, we can use it to read a big file as well. While reading, for each line obtained via BufferedReader.readLine(), we need to count the number of occurrences of the searched string via countStringInString():
public static int countOccurrences(Path path, String text, Charset ch)
throws IOException {
int count = 0;
try (BufferedReader br = Files.newBufferedReader(path, ch)) {
String line;
while ((line = br.readLine()) != null) {
count += countStringInString(line, text);
}
}
return count;
}