Ich möchte Datei Zeile für Zeile lesen. BufferedReader ist viel schneller als RandomAccessFile oder BufferedInputStream. Aber das Problem ist, dass ich nicht weiß, wie viele Bytes ich lese. Wie kann man Bytes lesen (Offset)? Ich habe es versucht.Wie kann man Bytes lesen (Offset) von BufferedReader?
String buffer;
int offset = 0;
while ((buffer = br.readLine()) != null)
offset += buffer.getBytes().length + 1; // 1 is for line separator
Ich arbeite, wenn die Datei klein ist. Wenn die Datei jedoch groß wird, wird der Offset kleiner als der tatsächliche Wert. Wie kann ich Offset bekommen?
Welche größere Aufgabe versuchen Sie zu erreichen? Es ist grundlegend schwierig wegen des internen Puffers (und Codierungen und verschiedenen Zeilenenden). –
Ich möchte Offsets von Zeilenbeginn erhalten. Also verwende ich diese Offsets, um später einen Teil der Datei mit RandomAccessFile zu lesen. – user1301568
Sie nehmen an, dass es nur ein Zeilentrennzeichenbyte gibt, z. \ n. Kannst du das annehmen? – EJP