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 20 Javascript
基于jquery的超简单上下翻
Apr 20 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
Js参数值中含有单引号或双引号问题的解决方法
Nov 06 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
bootstrap实现每隔5秒自动轮播效果
Dec 20 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 Javascript
JS实现长图上下滚动效果
Mar 19 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
PHP中的类型约束介绍
2015/05/11 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
Prototype 工具函数 学习
2009/07/23 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
跟我学习javascript创建对象(类)的8种方法
2015/11/20 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
python中字符串类型json操作的注意事项
2017/05/02 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
python使用PIL剪切和拼接图片
2020/03/23 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
意大利奢侈品网站:Italist
2016/08/23 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
类的核心特性有哪些
2014/01/01 面试题
2014年公司植树节活动方案
2014/03/04 职场文书
安全生产管理责任书
2014/04/16 职场文书
大学生创业计划书
2014/08/14 职场文书
作风整顿剖析材料
2014/09/30 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
天下第一关导游词
2015/02/06 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
机关工会工作总结2015
2015/05/26 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers