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入门教程(10) 认识其他对象
Jan 31 Javascript
用jQuery模拟select下拉框的简单示例代码
Jan 26 Javascript
javascript 实现子父窗体互相传值的简单实例
Feb 17 Javascript
基于Jquery实现键盘按键监听
May 11 Javascript
js判断变量初始化的三种形式及推荐用的形式
Jul 22 Javascript
JavaScript常用判断写法大全(推荐)
May 30 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
vue2.0构建单页应用最佳实战
Apr 01 Javascript
vue中mint-ui环境搭建详细介绍
Apr 06 Javascript
浅谈vux之x-input使用以及源码解读
Nov 04 Javascript
Node.js系列之发起get/post请求(2)
Aug 30 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
Jul 12 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
php正则修正符用法实例详解
2016/12/29 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
Jquery下的26个实用小技巧(jQuery tips, tricks & solutions)
2010/03/01 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
jquery常用操作小结
2014/07/21 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
js实现根据身份证号自动生成出生日期
2015/12/15 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
JavaScript tab选项卡插件实例代码
2016/02/23 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
vue设置默认首页的操作
2020/08/12 Javascript
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
django中间键重定向实例方法
2019/11/10 Python
python新手学习使用库
2020/06/11 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
平面设计岗位职责
2013/12/14 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
回复函范文
2015/07/14 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
详解Redis瘦身指南
2021/05/26 Redis