Chcę odczytać wiersz pliku po wierszu. BufferedReader jest znacznie szybszy niż RandomAccessFile lub BufferedInputStream. Ale problem polega na tym, że nie wiem, ile bajtów przeczytałem. Skąd wiadomo, że bajty są przeczytane (przesunięcie)? Próbowałem.Jak poznać bajty odczytu (przesunięcie) BufferedReader?
String buffer;
int offset = 0;
while ((buffer = br.readLine()) != null)
offset += buffer.getBytes().length + 1; // 1 is for line separator
Działa, jeśli plik jest mały. Jednak, gdy plik staje się duży, przesunięcie staje się mniejsze niż wartość rzeczywista. Jak mogę uzyskać offset?
Jakie większe zadanie próbujesz osiągnąć? Zasadniczo jest to trudne ze względu na wewnętrzny bufor (i kodowanie oraz różne zakończenia linii). –
Chcę uzyskać przesunięcia początku linii. Używam tego offsetu do odczytu części pliku za pomocą RandomAccessFile później. – user1301568
Zakładasz, że istnieje tylko jeden bajt separatora linii, np. \ n. Czy możesz to założyć? – EJP