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 相关文章推荐
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
May 07 Javascript
select标签模拟/美化方法采用JS外挂式插件
Apr 01 Javascript
node.js学习总结之调式代码的方法
Jun 25 Javascript
javascript操作select元素实例分析
Mar 27 Javascript
Angularjs实现多个页面共享数据的方式
Mar 29 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
Nov 25 Javascript
bootstrap多种样式进度条展示
Dec 20 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
Nov 20 Javascript
详解小程序原生使用ES7 async/await语法
Aug 06 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
Sep 01 Javascript
JS相册图片抖动放大展示效果的示例代码
Jan 29 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
php抓取并保存网站图片的实现代码
2015/10/28 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
js jquery做的图片连续滚动代码
2008/01/06 Javascript
javascript 一些用法小结
2009/09/11 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
学习Node.js模块机制
2016/10/17 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
python正则分析nginx的访问日志
2017/01/17 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python OpenCV处理图像之滤镜和图像运算
2018/07/10 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
用Python写一个自动木马程序
2019/09/17 Python
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
工商管理实习自我鉴定
2013/09/28 职场文书
医学专业大学生求职的自我评价
2013/11/27 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
三方合作协议书范本
2014/04/18 职场文书
运动会横幅标语
2014/06/17 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
为什么node.js不适合大型项目
2021/04/28 Javascript
SQL中的三种去重方法小结
2021/11/01 SQL Server
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL
MySql数据库触发器使用教程
2022/06/01 MySQL