Node.js readline 逐行读取、写入文件内容的示例


Posted in Javascript onMarch 01, 2018

本文介绍了运用readline逐行读取的两种实现,分享给大家,具体如下:

什么是Readline

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

效果图如下:

左边1.log 为源文件

右边1.readline.log为复制后的文件

下边为命令行输出

Node.js readline 逐行读取、写入文件内容的示例

实现方式一:

var readline = require('readline'); 
var fs = require('fs'); 
var os = require('os'); 
var fReadName = './1.log'; 
var fWriteName = './1.readline.log'; 
var fRead = fs.createReadStream(fReadName); 
var fWrite = fs.createWriteStream(fWriteName); 
var objReadline = readline.createInterface({ 
 input: fRead, 
// 这是另一种复制方式,这样on('line')里就不必再调用fWrite.write(line),当只是纯粹复制文件时推荐使用 
// 但文件末尾会多算一次index计数 sodino.com 
// output: fWrite, 
// terminal: true 
}); 
 
 
var index = 1; 
objReadline.on('line', (line)=>{ 
 var tmp = 'line' + index.toString() + ':' + line; 
 fWrite.write(tmp + os.EOL); // 下一行 
 console.log(index, line); 
 index ++; 
}); 
 
objReadline.on('close', ()=>{ 
 console.log('readline close...'); 
});

实现方式二:

var readline = require('readline'); 
var fs = require('fs'); 
var os = require('os'); 
 
var fReadName = './1.log'; 
var fWriteName = './1.readline.log'; 
var fRead = fs.createReadStream(fReadName); 
var fWrite = fs.createWriteStream(fWriteName); 
 
var enableWriteIndex = true; 
fRead.on('end', ()=>{ 
 console.log('end'); 
 enableWriteIndex = false; 
}); 
 
var objReadline = readline.createInterface({ 
 input: fRead, 
 output: fWrite, 
 terminal: true 
}); 
 
var index = 1; 
fWrite.write('line' + index.toString() +':'); 
objReadline.on('line', (line)=>{ 
 console.log(index, line); 
 if (enableWriteIndex) { 
 // 由于readline::output是先写入后调用的on('line')事件, 
 // 所以已经读取文件完毕时就不需要再写行号了... sodino.com 
 index ++; 
 var tmp = 'line' + index.toString() + ':'; 
 fWrite.write(tmp); 
 } 
}); 


objReadline.on('close', ()=>{ 
 console.log('readline close...'); 
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 事件截取enter按键页面提交事件示例代码
Mar 04 Javascript
JQuery中DOM事件冒泡实例分析
Jun 13 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
Sep 27 Javascript
TypeScript Type Innference(类型判断)
Mar 10 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
Dec 02 Javascript
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
JS设计模式之惰性模式(二)
Sep 29 Javascript
vue首次赋值不触发watch的解决方法
Sep 11 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
Apr 08 Javascript
vuex存储token示例
Nov 11 Javascript
JS Thunk 函数的含义和用法实例总结
Apr 08 Javascript
基于Vuex无法观察到值变化的解决方法
Mar 01 #Javascript
Node.js readline模块与util模块的使用
Mar 01 #Javascript
基于 Immutable.js 实现撤销重做功能的实例代码
Mar 01 #Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 #Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
Mar 01 #Javascript
详解用Node.js写一个简单的命令行工具
Mar 01 #Javascript
vue-prop父组件向子组件进行传值的方法
Mar 01 #Javascript
You might like
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PDO::errorInfo讲解
2019/01/28 PHP
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
Jquery ajaxStart()与ajaxStop()方法(实例讲解)
2013/12/18 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
javascript检查某个元素在数组中的索引值
2016/03/30 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
AngularJS包括详解及示例代码
2016/08/17 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
2018/12/13 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
urllib2自定义opener详解
2014/02/07 Python
python3 enum模块的应用实例详解
2019/08/12 Python
使用python快速在局域网内搭建http传输文件服务的方法
2019/11/14 Python
详解用Python进行时间序列预测的7种方法
2020/03/13 Python
Python气泡提示与标签的实现
2020/04/01 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
高级工程师岗位职责
2013/12/15 职场文书
火箭队口号
2014/06/18 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
毕业典礼邀请函
2015/01/31 职场文书
小学运动会报道稿
2015/07/22 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
Python中22个万用公式的小结
2021/07/21 Python
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
frg-100简单操作(设置)说明
2022/04/05 无线电