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 12 Javascript
js实现的常用的左侧导航效果
Oct 17 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
两个数组去重的JS代码
Dec 04 Javascript
js的alert样式如何更改如背景颜色
Jan 22 Javascript
JavaScript中九种常用排序算法
Sep 02 Javascript
jquery ztree实现树的搜索功能
Feb 25 Javascript
简易的JS计算器实现代码
Oct 18 Javascript
利用JS轻松实现获取表单数据
Dec 06 Javascript
使用express搭建一个简单的查询服务器的方法
Feb 09 Javascript
Angularjs中的$apply及优化使用详解
Jul 02 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
May 07 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中常用数组处理方法实例分析
2008/08/30 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
php使用fsockopen函数发送post,get请求获取网页内容的方法
2014/11/15 PHP
php中使用url传递数组的方法
2015/02/11 PHP
php中动态调用函数的方法
2015/03/16 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
JavaScript中链式调用之研习
2011/04/07 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
JavaScript中Date对象的常用方法示例
2015/10/24 Javascript
三种AngularJS中获取数据源的方式
2016/02/02 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
JavaScript实现猜数字游戏
2020/05/20 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
python列表的逆序遍历实现
2020/04/20 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
先进事迹报告会主持词
2014/04/02 职场文书
老师对学生的评语
2014/04/18 职场文书
小学生评语大全
2014/04/18 职场文书
社会实践的活动方案
2014/08/22 职场文书
在职证明书模板
2015/06/15 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书