TransWikia.com

Считать определённый символ с файла на java

Stack Overflow на русском Asked on November 7, 2021

Попытался составить код, который будет выдавать в консоли сколько определённых символов, в моём случае букв "о", содержит файл в формате 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. Прошу побольше объяснений. Спасибо!

One Answer

Можно это сделать функционально (быстро, дешево и сердито):

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();
        }
    }

}

Answered by Дмитрий on November 7, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP