Liczenie znaków w pliku

0

I przyszedł czas na przygodę z java. I jest też problem, którego nie umiem rozwiązać. Jak powinnien wyglądać kod javy aby pokazał mi łączną liczbę znaków w dowolnym pliku .txt ? Umiem zliczać ilość linii i ilość znaków w pojedynczej linii ale nie całość. Szukałem w google ale nic nie znalazłem. Dzieki

0

Możesz użyć read() aby czytać znak po znaku aż do EOF gdzie read() w tym przypadku zwraca -1.

Dokumentacja

1

@atmal: no nie, bo masz mulibyte characters i liczba bajtów może być inna niż liczba znaków.

@Marcin2509: jeżeli potrafisz policzyć liczbę znaków w linii, to wystarczy tylko zsumować w pętli liczby z poszczególnych linii, prawda :D

ps. w Javie 9 jest jeszcze zabawniej, bo każdy znak ma stałą długość, ale może one być zmienna w zależności od całości tekstu, w którym znak wystepuje.

0

No właśnie kombinowałem z pętlą for ale wywala mi błąd. Dodaję kod poniżej. Tam gdzie są znaki zapytania nie wiem jak sformułować to i czy idę dobrym tropem.

	public static void main(String[] args) throws IOException {
        BufferedReader inputFile = null;
        int numberOfLines = 0;
        String line;
        try {
            inputFile = new BufferedReader(new FileReader("plik.txt"));
            while (true) {
                line = inputFile.readLine();
                if (line == null) {
                    break;
                }
                numberOfLines++;
              System.out.println(line.length());
               }
              }
             finally {
            if (inputFile != null) {
                inputFile.close();
            }
        }
        System.out.println("Plik ma " + numberOfLines + " linii.");
        
       for (int i=1; i<=numberOfLines; i++) {
    	    ?????????????????????;
    	   System.out.println(iloscZnakow);
    	   }
}
}
1

Ale czemu tyle kodu? Po co zliczasz te linie, żeby potem od nowa pętle robić bez sensu....
Coś takiego powinno działać:

System.out.println(
 Files.lines(Paths.get("plik.txt")).mapToInt( String::length).sum()
) ;

1 użytkowników online, w tym zalogowanych: 0, gości: 1