node.js:将文本文件读入数组。(每行一个项目在数组中。)

node.js:将文本文件读入数组。(每行一个项目在数组中。),第1张

node.js:将文本文件读入数组。(每行一个项目在数组中。)

如果您可以将最终数据拟合到数组中,那么是否也不能像建议的那样将其拟合为字符串并进行拆分?无论如何,如果您希望一次只处理一行文件,也可以尝试如下 *** 作:

var fs = require('fs');function readLines(input, func) {  var remaining = '';  input.on('data', function(data) {    remaining += data;    var index = remaining.indexOf('n');    while (index > -1) {      var line = remaining.substring(0, index);      remaining = remaining.substring(index + 1);      func(line);      index = remaining.indexOf('n');    }  });  input.on('end', function() {    if (remaining.length > 0) {      func(remaining);    }  });}function func(data) {  console.log('Line: ' + data);}var input = fs.createReadStream('lines.txt');readLines(input, func);

编辑:( 作为对 phopkins的 评论的 回应
),我认为(至少在较新的版本中)子字符串不会复制数据,但会创建一个特殊的SlicedString对象(快速浏览v8源代码)。无论如何,这里都有一个避免提到的子字符串的修改(在文件中测试了几兆字节的“所有工作,没有玩耍会使杰克成为一个愚蠢的男孩”):

function readLines(input, func) {  var remaining = '';  input.on('data', function(data) {    remaining += data;    var index = remaining.indexOf('n');    var last  = 0;    while (index > -1) {      var line = remaining.substring(last, index);      last = index + 1;      func(line);      index = remaining.indexOf('n', last);    }    remaining = remaining.substring(last);  });  input.on('end', function() {    if (remaining.length > 0) {      func(remaining);    }  });}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4930282.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-12
下一篇2022-11-12

发表评论

登录后才能评论

评论列表(0条)

    保存