[JAVA] Zliczanie liczby znaków w pliku


(kostek135) #1

Witam.

Chciałem zliczać ilość znaków w pliku (wszystkie) włącznie z łamaniem linii i innymi znakami które mogą się pojawić. Problem w tym, że iteracja mnie dobije jak będę robił pętle znak po znaku dla 100 Mb pliku. Nie mniej podane zostanie w jakiej stronie kodowej jest stworzony plik. I tu się pojawia moja prośba, bo wymyśliłem, że w klasie File jest funkcja pozwalająca określić w bajtach rozmiar pliku, czy mając Charset, mogę jakoś sprytnie i małym wysiłkiem obliczyć ile bajtów przypada w kodowaniu "x" na znak? bo jeśli dobrze rozumuje, to: rozmiar pliku / ilość bajtów na znak = ilość znaków.


(ryba1986) #2

nie prościej odczytać rozmiar pliku ? ilość bajtów to ilość znaków


(kostek135) #3

Znak unikodu, np. zajmuje 2 bajty nie wszystkie pliki są kodowane w ascii, przykro mi.


(Sawyer47) #4

Jeśli różne znaki zajmują różną liczbę bajtów, to raczej nie ma rady.


(Tomek Matz) #5

Nieźle kombinujesz ... Pytanie tylko czy znajdziesz jakieś uniwersalne rozwiązanie dla każdego możliwego kodowania. Jeślibyś znalazł to będzie to najlepsze rozwiązanie.

Możesz też spróbować najpierw zrobić wersję nazwijmy to 1.0 tego programu opartą na pętli. Czyli wczytuj plik (oczywiście z uwzględnieniem kodowania w jakim został on zapisany) linijka po linijce, ale przetwarzanie każdej linijki puszczaj w osobnym wątku. Oprogramuj sobie jakiś kontener dla tych wątków (będziesz miał ich pewną ograniczoną ilość). Może nie będzie to aż tak wolne rozwiązanie?