Считать определённый символ с файла на java
Попытался составить код, который будет выдавать в консоли сколько определённых символов, в моём случае букв "о", содержит файл в формате txt. Помогите, пожалуйста, его оживить :)
package org.apache.commons.io;
package ua.com.prologistic;
import java.util.regex.Matcher;
import java.io.*;
import java.util.regex.Pattern;
public class main {
public static void main(String[] args) {
try(FileReader reader = new FileReader("C:\\Мои файлы\\text.txt"))
{
int c;
while((c=reader.read())!=-1){
System.out.print((char)c);
}
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
public class main {
/**
* @param args
*/
public void main(String[] args) {
// TODO Auto-generated method stub
String s = "";
Pattern pattern = Pattern.compile("о");
Matcher matcher = pattern.matcher(s);
int n = 0;
while (matcher.find()) {
System.out.println(matcher.group());
n++;
}
System.out.println("N = " + n);
}
}
P.S. Прошу побольше объяснений. Спасибо!
Ответы (1 шт):
Автор решения: Дмитрий
→ Ссылка
Можно это сделать функционально (быстро, дешево и сердито):
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.stream.Stream;
public class Main {
public static void main(String args[]) throws IOException {
String fileName = "text.txt";
String letter = "o";
System.out.println(letterCounter(fileName, letter));
}
public static long letterCounter(String fileName, String letter) throws IOException {
try (Stream<String> stream = Files.lines(Paths.get(fileName),Charset.defaultCharset())) {
return stream.flatMap(line -> Arrays.stream(line.split("")))
.filter(l -> l.equals(letter))
.count();
}
}
}