Tôi phải đọc một tệp văn bản lớn có dung lượng 25 GB và cần xử lý tệp này trong vòng 15-20 phút. Tệp này sẽ có nhiều phần đầu trang và chân trang.Đọc và xử lý tệp văn bản lớn 25GB
Tôi đã thử CSplit chia tệp này dựa trên tiêu đề, nhưng mất khoảng 24 đến 25 phút để chia nhỏ tệp thành một số tệp dựa trên tiêu đề, điều này hoàn toàn không chấp nhận được.
Tôi đã thử đọc và viết tuần tự bằng cách sử dụng BufferReader
và BufferWiter
cùng với FileReader
và FileWriter
. Mất hơn 27 phút. Một lần nữa, nó không được chấp nhận.
Tôi đã thử một cách tiếp cận khác như lấy chỉ mục bắt đầu của mỗi tiêu đề và sau đó chạy nhiều luồng để đọc tệp từ vị trí cụ thể bằng cách sử dụng RandomAccessFile
. Nhưng không may mắn về điều này.
Làm cách nào để tôi có thể đạt được yêu cầu của mình?
có thể trùng lặp của:
NIO có giới hạn xấu xí được thiết kế ngay trong đó: bạn có thể ánh xạ 2GB ở mức tốt nhất làm bộ đệm vì API bộ đệm sử dụng int cho tất cả bù trừ. Điều này làm cho nio cồng kềnh lúc tốt nhất cho các tập tin lớn. – Durandal