Nodejs 用readline模块,怎么实现读到某一行就不再继续读下去了?
Nodejs 用readline模块,怎么实现读到某一行就不再继续读下去了?
var fs = require(‘fs’); //var filename = process.argv[2]; var filename = ‘test.txt’; //var filename = __filename; var rl = require(‘readline’).createInterface({ input: fs.createReadStream(filename), terminal: false });
var i = 0 ; rl.on(‘line’, function(line){ console.log('Line: ’ + line); i++; if(i===4){ console.log(‘here’); rl.pause();//怎么不起作用 //process.exit(0); } });
要实现使用 Node.js 的 readline
模块在读取到某一行时停止读取文件,可以通过调用 rl.pause()
方法来暂停 readline 接口。如果需要完全停止读取并在特定条件下退出程序,可以结合 rl.pause()
和 process.exit()
方法。
下面是修改后的代码示例:
var fs = require('fs');
var readline = require('readline');
var filename = 'test.txt';
var rl = readline.createInterface({
input: fs.createReadStream(filename),
terminal: false
});
var i = 0;
rl.on('line', function(line) {
console.log('Line: ' + line);
i++;
if (i === 4) {
console.log('Stopping after reading the 4th line.');
rl.pause(); // 暂停 readline 接口
process.exit(0); // 退出进程
}
});
解释:
- 引入模块:首先引入
fs
和readline
模块。 - 创建 readline 接口:通过
readline.createInterface()
创建一个 readline 接口,并指定输入流为文件的可读流。 - 监听行事件:通过
.on('line', callback)
监听每一行的数据。每当读取到新行时,回调函数会被触发。 - 计数器:使用变量
i
来记录已经读取的行数。 - 条件判断:当
i
等于 4 时,输出一条消息并调用rl.pause()
暂停 readline 接口,然后调用process.exit(0)
终止当前进程。
注意事项:
rl.pause()
只是暂停 readline 接口,不会立即终止程序。如果需要彻底停止程序执行,可以使用process.exit()
。- 如果不希望程序直接退出,可以在
if
语句中添加其他逻辑处理,而不是调用process.exit()
。
这样就可以实现读取到某一行后停止读取文件的功能。
原来如此,非常感谢回答!! 顺便弱弱的问下,这些东西从哪儿看的? 好像api没有说的这么清楚啊
你可以使用 rl.pause()
来停止读取行,但需要确保在后续处理中调用 rl.resume()
才能继续读取。然而,在你的需求中,一旦读取到特定行(例如第4行),你希望完全停止读取,可以考虑直接关闭 readline 接口。
以下是一个修改后的示例代码:
var fs = require('fs');
var readline = require('readline');
var filename = 'test.txt';
var rl = readline.createInterface({
input: fs.createReadStream(filename),
terminal: false
});
var i = 0;
rl.on('line', function(line) {
console.log('Line: ' + line);
i++;
if (i === 4) {
console.log('Stopping after this line.');
rl.close(); // 关闭 readline 接口,停止读取
}
});
解释:
- 创建 readline 接口:通过
readline.createInterface
创建一个 readline 接口,指定文件流作为输入。 - 监听行事件:通过
rl.on('line', ...)
监听每一行的数据。 - 计数器:使用变量
i
来记录已经读取的行数。 - 条件判断:当
i
等于 4 时,打印一条消息并调用rl.close()
来停止读取行。
这样,当你读取到第4行时,程序将停止继续读取行数据。