Tôi muốn đọc từng dòng tệp. BufferedReader nhanh hơn nhiều so với RandomAccessFile hoặc BufferedInputStream. Nhưng vấn đề là tôi không biết có bao nhiêu byte tôi đọc. Làm thế nào để biết byte đọc (bù đắp)? Tôi đã thử.Làm thế nào để biết byte đọc (offset) của BufferedReader?
String buffer;
int offset = 0;
while ((buffer = br.readLine()) != null)
offset += buffer.getBytes().length + 1; // 1 is for line separator
Tôi hoạt động nếu tệp nhỏ. Nhưng khi tệp lớn, bù đắp sẽ nhỏ hơn giá trị thực. Làm cách nào để tôi được bù đắp?
Nhiệm vụ lớn hơn bạn đang cố gắng đạt được là gì? Đó là về cơ bản khó khăn do bộ đệm bên trong (và mã hóa, và kết thúc dòng khác nhau). –
Tôi muốn có được bù đắp của sự bắt đầu của dòng. Vì vậy, tôi sử dụng bù đắp để đọc một phần của tập tin bằng cách sử dụng RandomAccessFile sau này. – user1301568
Bạn giả sử rằng chỉ có một byte phân cách đường kẻ, ví dụ: \ n. Bạn có thể giả định điều đó không? – EJP