2012-05-01 27 views
7

Tôi đang viết một ứng dụng nhỏ trong javaBufferedReader vs. RandomAccessFile trong java

Tôi đọc tệp văn bản có kích thước khác nhau và tôi cần đọc từng dòng một (và chèn dòng vào mảng).
Có sự khác biệt giữa BufferedReader.ReadLine()RandomAccessFile.ReadLine(), về hiệu suất không?

Có lý do nào để thích cái này hay cái kia không?

+0

* "' BufferedReader.ReadLine() 'và' RandomAccessFile.ReadLine() '" * Cho rằng không có phương pháp nào tồn tại, chúng khá giống nhau. ;) –

+1

Có bạn đúng nhưng tôi nghĩ mọi người sẽ hiểu ý định của tôi :-) – choppy

Trả lời

6

RandomAccessFile.readLine() có thể hơi nhanh hơn vì nó bỏ qua mã hóa ký tự. Tuy nhiên nó không sử dụng bộ đệm và vẫn sử dụng StringBuffer: P để nó có thể chậm hơn trên hệ thống của bạn.

BufferedReader.readLine() được ưu tiên vì nó xử lý mã hóa ký tự, ví dụ: UTF-8 hoặc Windows-1252.

Ngoài ra còn có một DataInputStream.readLine() có thể được sử dụng với BufferedInputStream. Chỉ sử dụng điều này là bạn có thể chắc chắn bạn muốn mã hóa ISO-8859-1 hoặc ASCII.

+0

Điều gì về việc sử dụng bộ đệm, ai đó đã viết rằng BufferedReader có thể nhanh hơn vì nó sử dụng bộ đệm và RandomAccessFile không, có đúng không? – choppy

+0

Điểm tốt, tôi có thể đã nhầm lẫn với DataInputStream + BufferedInputStream. –

Các vấn đề liên quan