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)