Solution based on Scanner

Starting with JDK 9, the Scanner class comes with a method that returns a stream of delimiter-separated tokens, Stream<String> tokens(). If we treat the text to search as the delimiter of Scanner and we count the entries of the Stream returned by tokens(), then we obtain the correct result:

public static long countOccurrences(
Path path, String text, Charset ch) throws IOException {

long count;

try (Scanner scanner = new Scanner(path, ch)
.useDelimiter(Pattern.quote(text))) {

count = scanner.tokens().count() - 1;
}

return count;
}
The constructors for scanner that support an explicit charset were added in JDK 10.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.138.35.255