Tôi cố gắng để đọc một tập tin một dòng lớn tại một thời điểm. Tôi đã tìm thấy một câu hỏi trên Quora liên quan đến chủ đề này nhưng tôi thiếu một số kết nối để làm cho toàn bộ mọi thứ khớp với nhau.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
Bit mà tôi muốn tìm hiểu là làm thế nào tôi có thể đọc từng dòng một từ tệp thay vì STDIN như trong mẫu này.
Tôi đã thử:
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
nhưng nó không hoạt động. Tôi biết rằng trong một tình huống khó khăn tôi có thể quay lại sử dụng một cái gì đó như PHP, nhưng tôi muốn tìm hiểu điều này.
Tôi không nghĩ câu trả lời khác sẽ hoạt động vì tệp lớn hơn nhiều so với máy chủ tôi đang chạy có bộ nhớ.
if (line.length==1 && line[0] == 48) special(line);
node
tài liệu API của github.com/nodejs/node/pull/4609
fs.readSync()
. Bạn có thể đọc các octet nhị phân vào bộ đệm nhưng không có cách nào dễ dàng để xử lý một phần ký tự UTF-8 hoặc UTF-16 mà không cần kiểm tra bộ đệm trước khi dịch nó sang chuỗi JavaScript và quét EOL. CácBuffer()
loại không phải là tập hợp phong phú các chức năng để hoạt động trên trường hợp của nó như là chuỗi gốc, nhưng chuỗi nguồn gốc không thể chứa dữ liệu nhị phân. Dường như với tôi rằng việc thiếu một cách tích hợp để đọc các dòng văn bản từ các tập tin tùy ý là một khoảng cách thực sự trong node.js.