Nếu các tệp được đọc là rất lớn thì bạn sẽ muốn sử dụng BufferedReader
trên đầu trang của FileReader
để cải thiện hiệu suất đọc.
hoặc bạn có thể thử một cái gì đó likethis: -
BufferedReader br = new BufferedReader(new FileReader("file.txt"));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append("\n");
line = br.readLine();
}
String everything = sb.toString();
} finally {
br.close();
}
hoặc bạn có thể thử chương trình này. Nó hoạt động nhanh hơn cho các tệp lớn hơn: -
public String readDoc(File f) {
String text = "";
int read, N = 1024 * 1024;
char[] buffer = new char[N];
try {
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
while(true) {
read = br.read(buffer, 0, N);
text += new String(buffer, 0, read);
if(read < N) {
break;
}
}
} catch(Exception ex) {
ex.printStackTrace();
}
return text;
}
Nguồn
2012-11-20 19:06:09
Bạn có bằng chứng cụ thể rằng đọc từ tệp là nút cổ chai trong chương trình của bạn không? Bạn đang làm gì với dữ liệu sau đó và tệp lớn như thế nào? Lưu ý rằng tôi sẽ tự tránh 'FileReader' - sử dụng' InputStreamReader' gói 'FileInputStream', vì vậy bạn có thể thiết lập một cách rõ ràng mã hóa. –
Có thể nút cổ chai của bạn đang tách dòng chứ không phải đọc tệp? Có nhiều cách để tăng tốc String.split(). Từ kinh nghiệm của tôi, BufferedReader rất nhanh. – Serg
Về mặt lý thuyết, java NIO có thể đọc tệp nhanh hơn IO –