한 번에 한 줄씩 큰 파일을 읽으려고합니다. Quora 에서 주제를 다루는 질문을 찾았 지만 모든 것을 함께 사용할 수있는 연결이 누락되었습니다.
var Lazy=require("lazy");
new Lazy(process.stdin)
.lines
.forEach(
function(line) {
console.log(line.toString());
}
);
process.stdin.resume();
내가 알아 내고 싶은 것은이 샘플에서와 같이 STDIN 대신 파일에서 한 번에 한 줄씩 읽는 방법입니다.
나는 시도했다 :
fs.open('./VeryBigFile.csv', 'r', '0666', Process);
function Process(err, fd) {
if (err) throw err;
// DO lazy read
}
하지만 작동하지 않습니다. 나는 핀치로 PHP와 같은 것을 다시 사용할 수 있다는 것을 알고 있지만 이것을 알아 내고 싶습니다.
파일이 메모리가있는 서버보다 훨씬 크기 때문에 다른 대답은 효과가 없다고 생각합니다.
if (line.length==1 && line[0] == 48) special(line);
node
API 문서 에서 약간 수정되었습니다. github.com/nodejs/node/pull/4609
fs.readSync()
집니다. 바이너리 옥텟을 버퍼로 읽을 수 있지만 버퍼를 JavaScript 문자열로 변환하고 EOL을 스캔하기 전에 버퍼를 검사하지 않고 부분 UTF-8 또는 UTF-16 문자를 처리하는 쉬운 방법은 없습니다. 이Buffer()
유형에는 인스턴스에서 기본 문자열처럼 작동 할 수있는 다양한 함수가 없지만 기본 문자열에는 이진 데이터를 포함 할 수 없습니다. 임의의 파일 핸들에서 텍스트 줄을 읽는 기본 제공 방법이 부족한 것은 node.js의 실제 격차 인 것 같습니다.