栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);    }  });}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379922.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号