2015-04-17 16 views
9

Vì vậy, tôi đang xử lý tích hợp một hệ thống cũ. Nó tạo ra một tệp văn bản lớn, in các lệnh trong một chuỗi lớn. Chuỗi rất lớn. Chúng tôi đang nói 450 000 ký tự trở lên.đọc các chuỗi lớn (450000+ ký tự) từ tệp

Tôi cần chia nhỏ dòng này thành một dòng, mỗi dòng một hướng dẫn. Mỗi lệnh được phân tách bằng mã năm chữ số, trong đó mã chứa số ký tự trong lệnh tiếp theo.

Giải pháp của tôi là viết một chương trình java nhỏ sử dụng trình đọc được đọc để đọc tệp thành chuỗi, sau đó được chia thành các dòng và được lưu vào tệp mới.

Bất kỳ lời khuyên nào về xử lý vấn đề này? Liệu một người đọc được đệm có thể đọc nó thành một chuỗi thông thường? Tôi đang làm điều này sai?

+0

'BufferedReader' sẽ có thể đọc dữ liệu. – luiges90

+0

Tôi sẽ sử dụng 'StringBuilder' – brso05

+0

Thực ra tôi sẽ xử lý tệp theo khối hơn là đặt tất cả vào một chuỗi' String' hoặc 'StringBuilder' nếu hiệu suất trở thành vấn đề nếu không tôi sẽ tải tất cả vào một' StringBuilder'. – brso05

Trả lời

3

Có. Sử dụng trình đọc được đệm.

Làm việc với kích thước tối đa của lệnh và tạo một char [] có kích thước đó. Sau đó, hãy thực hiện một số việc như:

reader.read(charArray, 0, 5); 

// parse the header 

reader.read(charArray, 0, lengthOfInstruction); 

String instruction = new String(charArray, 0, lengthOfInstruction); 

// do stuff with the instruction 

Bạn đặt vòng lặp này trong khi kết thúc khi tệp kết thúc.

Đây có thể không phải là thời gian chạy hiệu quả nhất, nhưng nó có thể đủ tốt và sẽ đủ đơn giản để làm việc.

+0

Tôi đã kết thúc thực hiện gần như chính xác điều này. –

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