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动画animate方法使用介绍
May 06 Javascript
js判断屏幕分辨率的代码
Jul 16 Javascript
图片上传插件jquery.uploadify详解
Nov 15 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
Mar 23 jQuery
详解webpack+es6+angular1.x项目构建
May 02 Javascript
几种响应式文字详解
May 19 Javascript
angular 用拦截器统一处理http请求和响应的方法
Jun 08 Javascript
js正则相关知识点专题
May 10 Javascript
使用D3.js构建实时图形的示例代码
Aug 28 Javascript
Vue.directive使用注意(小结)
Aug 31 Javascript
详解 微信小程序开发框架(MINA)
May 17 Javascript
JS实现动态星空背景效果
Nov 01 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 删除cookie和浏览器重定向
2009/03/16 PHP
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP用mysql数据库存储session的代码
2010/03/05 PHP
PHP实现多图片上传类实例
2014/07/26 PHP
PHP实现服务器状态监控的方法
2014/12/09 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP中Array相关函数简介
2016/07/03 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
JS跨域总结
2012/08/30 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
weex里Vuex state使用storage持久化详解
2017/09/09 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
python中PIL安装简单教程
2016/04/21 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
Python定时任务sched模块用法示例
2018/07/16 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
python mysql断开重连的实现方法
2019/07/26 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
在python中做正态性检验示例
2019/12/09 Python
python如何随机生成高强度密码
2020/08/19 Python
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
中海讯通笔试题
2015/09/15 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
校企合作协议书
2014/04/16 职场文书
品德评语大全
2014/05/05 职场文书
青安岗事迹材料
2014/05/14 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
病假证明模板
2015/06/19 职场文书