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操作tr和td内容的方法实例
Mar 06 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
Mar 29 Javascript
js判断iframe内的网页是否滚动到底部触发事件
Mar 18 Javascript
Vue.js每天必学之数据双向绑定
Sep 05 Javascript
8 行 Node.js 代码实现代理服务器
Dec 05 Javascript
jQuery实现遍历复选框的方法示例
Mar 06 Javascript
vue实现学生录入系统之添加删除功能
Jul 11 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
深入理解JavaScript 中的执行上下文和执行栈
Oct 23 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
原生js添加一个或多个类名的方法分析
Jul 30 Javascript
vue使用axios实现excel文件下载的功能
Jul 16 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一句话cmdshell新型 (非一句话木马)
2009/04/18 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP实现单例模式最安全的做法
2014/06/13 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
Laravel核心解读之异常处理的实践过程
2019/02/24 PHP
javascript 同时在IE和FireFox获取KeyCode的代码
2010/02/07 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
JavaScript自定义日期格式化函数详细解析
2014/01/14 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
javascript RegExp 使用说明
2016/05/21 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
vue中$refs的用法及作用详解
2018/04/24 Javascript
详解Vue项目编译后部署在非网站根目录的解决方案
2018/04/26 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
Vite和Vue CLI的优劣
2021/01/30 Vue.js
Python下载指定页面上图片的方法
2016/05/12 Python
简单实现python画圆功能
2018/01/25 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
HTML5实现QQ聊天气泡效果
2017/06/26 HTML / CSS
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
应届生法律求职信
2013/10/22 职场文书
公司请假条格式
2014/04/11 职场文书
房产授权委托书范本
2014/09/22 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript