Node.js v18.8.0 文档


目录

readline 逐行读取#

中英对照

node:readline 模块提供了用于从可读流(例如 process.stdin)每次一行地读取数据的接口。




InterfaceConstructor#

中英对照

    InterfaceConstructor 类的实例是使用 readlinePromises.createInterface()readline.createInterface() 方法构造的。 每个实例都与单个 input 可读流和单个 output 可写流相关联。 output 流用于打印到达并从 input 流中读取的用户输入的提示。

    'close' 事件#

    中英对照

    发生以下情况之一时会触发 'close' 事件:

      'line' 事件#

      中英对照

      每当 input 流接收到行尾输入(\n\r\r\n)时,则会触发 'line' 事件。 这通常发生在用户按下 回车返回 时。

      
      

      'history' 事件#

      中英对照

      每当历史数组发生更改时,则会触发 'history' 事件。

      
      

      'pause' 事件#

      中英对照

      发生以下情况之一时会触发 'pause' 事件:

        
        

        'resume' 事件#

        中英对照

        每当 input 流恢复时,则会触发 'resume' 事件。

        
        

        'SIGCONT' 事件#

        中英对照

        当之前使用 Ctrl+Z(即 SIGTSTP)移动到后台的 Node.js 进程然后使用 fg(1p) 返回到前台时,则会触发 'SIGCONT' 事件。

        
        

        'SIGINT' 事件#

        中英对照

        每当 input 流接收到 Ctrl+C 输入(通常称为 SIGINT)时,则会触发 'SIGINT' 事件。 如果在 input 流接收到 SIGINT 时没有注册 'SIGINT' 事件监听器,则将触发 'pause' 事件。

        
        

        'SIGTSTP' 事件#

        中英对照

        input 流接收到 Ctrl+Z 输入(通常称为 SIGTSTP)时,则会触发 'SIGTSTP' 事件。 如果 input 流接收到 SIGTSTP 时没有注册 'SIGTSTP' 事件监听器,则 Node.js 进程将被发送到后台。

        
        

        rl.close()#

        中英对照

        rl.close() 方法关闭 InterfaceConstructor 实例并放弃对 inputoutput 流的控制。 当调用时,将触发 'close' 事件。

        rl.pause()#

        中英对照

        rl.pause() 方法暂停 input 流,允许它稍后在必要时恢复。

        rl.prompt([preserveCursor])#

        中英对照

          rl.prompt() 方法将配置为 promptInterfaceConstructor 实例写入 output 中的新行,以便为用户提供用于提供输入的新位置。

          rl.question(query[, options], callback)#

          中英对照

            rl.question() 方法通过将 query 写入 output 来显示 query,等待在 input 上提供用户输入,然后调用 callback 函数,将提供的输入作为第一个参数传入。

            
            

            
            

            rl.resume()#

            中英对照

            如果 input 流已暂停,则 rl.resume() 方法会恢复该流。

            rl.setPrompt(prompt)#

            中英对照

              rl.setPrompt() 方法设置了在调用 rl.prompt() 时将写入 output 的提示。

              rl.getPrompt()#

              中英对照

                rl.getPrompt() 方法返回 rl.prompt() 使用的当前提示。

                rl.write(data[, key])#

                中英对照

                  rl.write() 方法会将 data 或由 key 标识的键序列写入 output。 仅当 outputTTY 文本终端时才支持 key 参数。 有关组合键的列表,请参阅 TTY 快捷键

                  
                  

                  rl[Symbol.asyncIterator]()#

                  中英对照

                    创建 AsyncIterator 对象,该对象遍历输入流中的每一行作为字符串。 此方法允许通过 for await...of 循环异步迭代 InterfaceConstructor 对象。

                    
                    

                    rl.line#

                    中英对照

                      节点正在处理的当前输入数据。

                      
                      

                      rl.cursor#

                      中英对照

                        相对于 rl.line 的光标位置。

                        rl.getCursorPos()#

                        中英对照

                          返回光标相对于输入提示 + 字符串的实际位置。 长输入(换行)字符串以及多行提示都包含在计算中。

                          Promises API#

                          稳定性: 1 - 实验

                          readlinePromises.Interface#

                          中英对照

                            readlinePromises.Interface 类的实例是使用 readlinePromises.createInterface() 方法构造的。 每个实例都与单个 input 可读流和单个 output 可写流相关联。 output 流用于打印到达并从 input 流中读取的用户输入的提示。

                            rl.question(query[, options])#

                            中英对照

                              rl.question() 方法通过将 query 写入 output 来显示 query,等待在 input 上提供用户输入,然后调用 callback 函数,将提供的输入作为第一个参数传入。

                              
                              

                              
                              

                              readlinePromises.Readline#

                              new readlinePromises.Readline(stream[, options])#

                              中英对照

                                rl.clearLine(dir)#

                                中英对照

                                  rl.clearLine() 方法在待处理动作的内部列表中添加一个动作,该动作在 dir 标识的指定方向上清除关联 stream 的当前行。 调用 rl.commit() 看看这个方法的效果,除非 autoCommit: true 传给了构造函数。

                                  rl.clearScreenDown()#

                                  中英对照

                                    rl.clearScreenDown() 方法向待处理动作的内部列表添加一个动作,该动作从光标向下的当前位置清除关联流。 调用 rl.commit() 看看这个方法的效果,除非 autoCommit: true 传给了构造函数。

                                    rl.commit()#

                                    中英对照

                                      rl.commit() 方法将所有待处理的操作发送到关联的 stream 并清除待处理操作的内部列表。

                                      rl.cursorTo(x[, y])#

                                      中英对照

                                        rl.cursorTo() 方法向待处理动作的内部列表添加一个动作,该动作将光标移动到相关 stream 中指定的位置。 调用 rl.commit() 看看这个方法的效果,除非 autoCommit: true 传给了构造函数。

                                        rl.moveCursor(dx, dy)#

                                        中英对照

                                          rl.moveCursor() 方法向待处理动作的内部列表添加一个动作,该动作相对于其在关联 stream 中的当前位置移动光标。 调用 rl.commit() 看看这个方法的效果,除非 autoCommit: true 传给了构造函数。

                                          rl.rollback()#

                                          中英对照

                                            rl.rollback 方法清除内部待处理操作列表,而不将其发送到关联的 stream

                                            readlinePromises.createInterface(options)#

                                            中英对照

                                              readlinePromises.createInterface() 方法创建新的 readlinePromises.Interface 实例。

                                              
                                              

                                              
                                              

                                              completer 函数的使用#

                                              中英对照

                                              completer 函数将用户输入的当前行作为参数,并返回包含 2 个条目的 Array

                                                
                                                

                                                
                                                

                                                Callback API#

                                                readline.Interface#

                                                中英对照

                                                  readline.Interface 类的实例是使用 readline.createInterface() 方法构造的。 每个实例都与单个 input 可读流和单个 output 可写流相关联。 output 流用于打印到达并从 input 流中读取的用户输入的提示。

                                                  rl.question(query[, options], callback)#

                                                  中英对照

                                                    rl.question() 方法通过将 query 写入 output 来显示 query,等待在 input 上提供用户输入,然后调用 callback 函数,将提供的输入作为第一个参数传入。

                                                    
                                                    

                                                    
                                                    

                                                    readline.clearLine(stream, dir[, callback])#

                                                    中英对照

                                                      readline.clearLine() 方法在 dir 标识的指定方向上清除给定 TTY 流的当前行。

                                                      readline.clearScreenDown(stream[, callback])#

                                                      中英对照

                                                        readline.clearScreenDown() 方法从光标的当前位置向下清除给定的 TTY 流。

                                                        readline.createInterface(options)#

                                                        中英对照

                                                          readline.createInterface() 方法创建新的 readline.Interface 实例。

                                                          
                                                          

                                                          
                                                          

                                                          completer 函数的使用#

                                                          中英对照

                                                          completer 函数将用户输入的当前行作为参数,并返回包含 2 个条目的 Array

                                                            
                                                            

                                                            
                                                            

                                                            readline.cursorTo(stream, x[, y][, callback])#

                                                            中英对照

                                                              readline.cursorTo() 方法将光标移动到给定的 TTY stream 中的指定位置。

                                                              readline.moveCursor(stream, dx, dy[, callback])#

                                                              中英对照

                                                                readline.moveCursor() 方法相对于它在给定的 TTY stream 中的当前位置移动光标。

                                                                readline.emitKeypressEvents(stream[, interface])#

                                                                中英对照

                                                                  readline.emitKeypressEvents() 方法使给定的可读流开始触发与接收到的输入相对应的 'keypress' 事件。

                                                                  
                                                                  

                                                                  示例:微型 CLI#

                                                                  中英对照

                                                                  下面的例子说明了使用 readline.Interface 类来实现一个微型的命令行界面:

                                                                  
                                                                  

                                                                  示例:逐行读取文件流#

                                                                  中英对照

                                                                  readline 的一个常见用例是每次一行地消费输入文件。 最简单的方式是利用 fs.ReadStream API 和 for await...of 循环:

                                                                  
                                                                  

                                                                  
                                                                  

                                                                  
                                                                  

                                                                  TTY 快捷键#

                                                                  中英对照

                                                                  返回顶部