readline 模块提供了一种读取数据流的方法,一次一行。
它有两种 API:
// 基于 promise 的 API
const readline = require('readline/promises')
// 回调和同步的 API
const readline = require('readline')
以下示例是 readline 模块的基本用法:
const readline = require('readline')
const { stdin: input, stdout: output } = require('process')
const rl = readline.createInterface({ input, output })
rl.question('你觉得 Node.js 怎么样?', (answer) => {
console.log(`感谢您的宝贵反馈: ${answer}`)
rl.close()
})
步骤如下:
- 使用
readline的createInterface方法创建了一个接口实例 - 调用实例的相关方法,如
question方法输入 - 监听
readline的close事件
一旦执行,Node.js 应用程序将不会终止,直到 readline.Interface 关闭,因为接口在输入流上等待接收数据。
当所有操作的完成时,我们使用 close 方法来结束程序。close 方法会触发 close 事件:
rl.on('close', () => {
console.log('退出程序')
process.exit(0)
})
readline 属性和方法
clearLine()清除指定流的当前行clearScreenDown()从当前光标向下位置清除指定的流createInterface()创建一个接口对象cursorTo()将光标移动到指定位置emitKeypressEvents()为指定流触发按键事件moveCursor()将光标移动到相对于当前位置的新位置
示例:打开一个文件并逐行返回内容
使用 line 事件,逐行读取文件内容:
const readline = require('readline')
const fs = require('fs')
const rl = readline.createInterface({
input: fs.createReadStream('./package.json')
})
let lineno = 0
rl.on('line', (line) => {
lineno++
console.log(`Line number ${lineno}': ${line}`)
})
详细 API 请查阅文档。



所有评论(0)