cách nhanh nhất có thể đọc các tệp tương đối lớn với các phương thức I/O của Java là gì? Giải pháp hiện tại của tôi sử dụng tiết kiệm BufferedInputStream
cho một mảng byte với 1024 byte được phân bổ cho nó. Mỗi bộ đệm được lưu trong một ArrayList
để sử dụng sau này. Toàn bộ quá trình được gọi qua một thread riêng biệt (giao diện có thể gọi).Cách nhanh nhất để đọc các tệp byte tương đối lớn trong Java
Mặc dù không phải rất nhanh.
ArrayList<byte[]> outputArr = new ArrayList<byte[]>();
try {
BufferedInputStream reader = new BufferedInputStream(new FileInputStream (dir+filename));
byte[] buffer = new byte[LIMIT]; // == 1024
int i = 0;
while (reader.available() != 0) {
reader.read(buffer);
i++;
if (i <= LIMIT){
outputArr.add(buffer);
i = 0;
buffer = null;
buffer = new byte[LIMIT];
}
else continue;
}
System.out.println("FileReader-Elements: "+outputArr.size()+" w. "+buffer.length+" byte each.");
Hãy xem thư viện Apache Commons để có thêm tùy chọn. Và để xác định tốc độ, hãy xem cuốn sách Hiệu chỉnh Java của O'Reilly. – therobyouknow
Hiện tại bạn đang bỏ qua giá trị được trả về bởi lệnh gọi 'read()' của bạn. * Đừng làm vậy. * –