什么是Readline

Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流。使用require("readline")可以引用模块。

如何使用Readline

以使用为角度的话,学习Readline,我们需要学习它的三个部分:

创建Readline实例

学习里面的接口方法

学习监听与处理Readline事件

下面我们通过实例来学习这三个部分。

实例1:我叫小明

代码如下:

/**

* Created by Administrator on 2015/9/10.

*/

// 引入readline模块

var readline = require('readline');

//创建readline接口实例

var rl = readline.createInterface({

input:process.stdin,

output:process.stdout

});

// question方法

rl.question("你叫什么?",function(answer){

console.log("名字是:"+answer);

// 不加close,则不会结束

rl.close();

});

// close事件监听

rl.on("close", function(){

// 结束程序

process.exit(0);

});

上面的实例用到了我们需要学习到的三个部分,首先使用了createInterface创建了一个接口实例,然后使用了question方法来询问姓名,最后是监听readline的close事件,因为无论是方法名和事件的监听的名字都比较直观,关于它们的作用也能一目了然,我这里就只提了三点需要注意的:

在createInterface里,我们需要传入标准输入输出作为数据的输入输出流

在question方法的回调函数里,我们可以获取到用户的输入并进行处理,同时我们进行了close操作来结束程序,否则程序不会结束

在close事件的监听里,我们执行了process.exit(0)来使程序退出的操作,因为readline模块只要一开始获取用户输入就不会结束,必须使用这种直接的方式来结束程序

实例2:输入与输出

/**

* Created by Administrator on 2015/9/10.

*/

// 引入readline模块

var readline = require('readline');

var rl = readline.createInterface({

input: process.stdin,

output: process.stdout

});

rl.on('line', function(line){

switch(line.trim()) {

case 'copy':

console.log("复制");

break;

case 'hello':

rl.write("Write");

console.log('world!');

break;

case 'close':

rl.close();

break;

default:

console.log('没有找到命令!');

break;

}

});

rl.on('close', function() {

console.log('bye bye');

process.exit(0);

});

'line'事件,这个事件就是在用户输完一行,按下回车后就会触发的事件,它会将用户输入的数据通过回调函数传回来,可在此方法里处理用户输入的数据

实例3:类似命令行的输入输出

var readline = require('readline');

var rl = readline.createInterface(process.stdin, process.stdout);

rl.setPrompt('Test> ');

rl.prompt();

rl.on('line', function(line) {

switch(line.trim()) {

case 'copy':

console.log("复制");

break;

case 'hello':

console.log('world!');

break;

case 'close':

rl.close();

break;

default:

console.log('没有找到命令!');

break;

}

rl.prompt();

});

rl.on('close', function() {

console.log('bye bye!');

process.exit(0);

});

运行截图如下:

这个实例里出现了两个新方法

方法setPromat(promat),就是给每一行设置一个提示符,就好比window命令行的> ,我们这里设置的是Test>

promat()可以算是最重要的方法了,因为它才体现了Readline的核心作用,以行为单位读取数据,premat方法就是在等待用户输入数据

这里又监听了'line' 事件,因为promat方法调用一次就只会读取一次数据,所以,在这个方法又调用了一次promat方法,这样就可以继续读取用户输入,从而达到一种命令行的效果

附录

这里只写了三个比较简单的例子来说明Readline的使用,如果还想要了解更多的关于Readline的用法以及更多的方法和事件,可以去看官方的API

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

java调用node脚本并获取输出,Node.js用readline模块实现输入输出相关推荐

  1. java 调用linux 脚本并获取返回值

    大家好,我是烤鸭: 今天分享下java 调用 shell脚本 并获取返回值. 代码实践 String cmd = "df -h"; StringBuffer sb = new St ...

  2. java无阻塞执行脚本,JAVA调用Shell脚本-及阻塞的解决方法

    JAVA调用Shell脚本--及阻塞的解决办法 用java调用shell,使用 Process p=Runtime.getRuntime().exec(String[] cmd); Runtime.e ...

  3. java 调用python脚本过程_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  4. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值

    在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...

  5. Java调用Python脚本:轻松实现两种语言的互操作性

    Java和Python都是非常流行的编程语言,它们都有自己的优点,但也有自己的局限性.在编写应用程序时,我们可能需要使用两种语言来共同完成一项任务.在这种情况下,Java需要调用Python脚本来解决 ...

  6. java执行python脚本_通过Java调用Python脚本

    在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...

  7. Java调用python脚本

    Java调用python脚本 最近也是刚开始学python,所以这里写了一个简单的小方法用Java来调用python脚本.后期再进行更新. 1.Java启动程序的方法 在Java中提供了两种方法来启动 ...

  8. java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合

    java 调用groovy脚本,实现多个sql按指定逻辑运行,可做报表预聚合 1.引入pom <dependency><groupId>org.codehaus.groovy& ...

  9. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

最新文章

  1. 以后版本网卡命名规则
  2. Labview 属性节点讲解
  3. html 显示代码块,使用Pre在文章中显示代码块 - 文章教程
  4. axure 素材_Axure原型:超漂亮的系统首页
  5. 暴雪帝国辉煌能否延续
  6. github 公钥 私钥_windows下如何使用Git将本地项目上传到GitHub
  7. python计算机中丢失api-ms-win-crt-runtime-l_api-ms-win-crt-runtime-l1-1-0.dll
  8. 软件开发报价模板_模板类app开发价格是多少钱?
  9. 前端开发:模块化 — 高效重构
  10. 如何确认guest账户是空密码_Mac OS X如何访问Windows局域网文件共享
  11. 发布最新通用挤房器:全能挤房器1.0
  12. php 调用speex解码库,android 用speex做回音消除
  13. 2020年全国大学生数学建模竞赛辽宁赛区获奖名单(本科组)
  14. 支付宝飞行模式/转卡/转账/h5拉起支付
  15. 中奖人js滚动效果_原生js实现中奖信息无间隙滚动效果
  16. 下载文件 download
  17. android ip查看工具,安卓手机查看IP地址的两种方法
  18. 浅论信息化环境下的印刷业发展
  19. Linux原理与应用A卷广东科技,Linux操作系统应用选择题附答案(广东开放大学)...
  20. STM32添加以太网连接

热门文章

  1. POJ NOI0105-32 求分数序列和
  2. 分层抽样(Stratified sampling)
  3. 音频、视频等文件格式(.ts、.meta)及其认识
  4. C++基础::shared_ptr 编程细节(一)
  5. C++基础——使用字符串作为函数模板的实参
  6. 行编辑器c语言,行编辑器——C语言.doc
  7. ssms 缺少索引信息_疯象网:都说二十世纪信息值钱,其实二十一世纪的信息更值钱...
  8. python官网下载文件-使用Python下载文件的简单示例
  9. python软件-Python软件下载|Python最新版本v3.5.1 下载_当游网
  10. python基础30个常用代码-30个Python常用极简代码,拿走就用