我试图在NodeJS中创建一个脚本,它返回文本文件的前两行。
我目前正在使用此代码:
MEDIASUBTYPE_RGB24
所以这会返回所有行,但我只想让它返回前2行。
我该怎么做?
答案 0 :(得分:11)
对所有场景最有效。
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(__dirname+'/sample.txt'),
});
var lineCounter = 0; var wantedLines = [];
lineReader.on('line', function (line) {
lineCounter++;
wantedLines.push(line);
if(lineCounter==2){lineReader.close();}
});
lineReader.on('close', function() {
console.log(wantedLines);
process.exit(0);
});
(对大文件效率不高)简单阅读&换行分组工作示例:
const fs = require('fs');
fs.readFile(__dirname+'/sample.txt', "utf8", (err, data) => {
if(err){console.log(err);}else{
data = data.split("\n"); // split the document into lines
data.length = 2; // set the total number of lines to 2
console.log(data); //Array containing the 2 lines
}
});
sample.txt 文件:
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
运行此脚本将输出:
[ 'This is line 1', 'This is line 2' ]
如果要读取的文件在每个请求中都是相同的。您应该在服务器启动时将它(存储它)加载到全局变量(如果不是太大)或新文件(需要再次读取以便提供服务),例如在listen回调中。每当有人在给定路线上执行请求时,您将避免重复相同的任务(将文件读入字符串,拆分每一行,并保留前两行)。
希望它有所帮助。
答案 1 :(得分:2)
对于那些无法使linereader停止的人,请执行以下操作:
lineReader.close()
lineReader.removeAllListeners()