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 相关文章推荐
JavaScript使用过程中需要注意的地方和一些基本语法
Aug 26 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
JavaScript暂停和继续定时器的实现方法
Jul 18 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
解决在vue项目中webpack打包后字体不生效的问题
Sep 01 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
d3绘制基本的柱形图的实现代码
Dec 12 Javascript
如何从0开始用node写一个自己的命令行程序
Dec 29 Javascript
vue 解决路由只变化参数页面组件不更新问题
Nov 05 Javascript
el-form 多层级表单的实现示例
Sep 10 Javascript
vue中watch的用法汇总
Dec 28 Vue.js
基于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
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
JS基于cookie实现来宾统计记录访客信息的方法
2015/08/04 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
Angular排序实例详解
2017/06/28 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
关于JS解构的5种有趣用法
2019/09/05 Javascript
在Python的web框架中配置app的教程
2015/04/30 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
python实现电子产品商店
2019/02/26 Python
python set内置函数的具体使用
2019/07/02 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
HTML5里的placeholder属性使用实例和美化显示效果的方法
2014/04/23 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
什么是索引指示器
2012/08/20 面试题
工程总经理工作职责
2013/12/09 职场文书
大学毕业自我评价
2014/02/02 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
web前端之css水平居中代码解析
2021/05/20 HTML / CSS