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 写类方式之五
Jul 05 Javascript
验证javascript中Object和Function的关系的三段简单代码
Jun 27 Javascript
jquery实现背景墙聚光灯效果示例分享
Mar 02 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
May 07 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
May 07 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
WEB 前端开发中防治重复提交的实现方法
Oct 26 Javascript
微信小程序  Mustache语法详细介绍
Oct 27 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
Sep 08 Javascript
微信小程序接入腾讯云验证码的方法步骤
Jan 07 Javascript
微信小程序input抖动问题的修复方法
Mar 03 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连接mysql数据库代码
2009/03/10 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
ie 7/8不支持trim的属性的解决方案
2014/05/23 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
vue使用过滤器格式化日期
2021/01/20 Vue.js
python 字典操作提取key,value的方法
2019/06/26 Python
python实现字符串和数字拼接
2020/03/02 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
python 通过文件夹导入包的操作
2020/06/01 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
python温度转换华氏温度实现代码
2020/12/06 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
一篇.NET面试题
2014/09/29 面试题
会计学应届毕业生推荐信
2013/11/04 职场文书
学生请假条格式
2014/04/11 职场文书
教师一帮一活动总结
2014/07/08 职场文书
婚宴来宾致辞
2015/07/28 职场文书
2019个人年度目标制定攻略!
2019/07/12 职场文书
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫