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
Możesz użyć read() aby czytać znak po znaku aż do EOF
gdzie read()
w tym przypadku zwraca -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.
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);
}
}
}
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()
) ;