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 相关文章推荐
百度留言本js 大家可以参考下
Oct 13 Javascript
理解 JavaScript 预解析
Oct 25 Javascript
input 输入框内的输入事件详细分析
Mar 17 Javascript
早该知道的7个JavaScript技巧
Mar 27 Javascript
页面使用密码保护代码
Apr 10 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
DOM事件探秘篇
Feb 15 Javascript
一道面试题引发的对javascript类型转换的思考
Mar 06 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
Sep 27 Javascript
利用JS代码自动删除稿件的普通弹幕功能
Sep 20 Javascript
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
Dec 11 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命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php实现Mongodb自定义方式生成自增ID的方法
2015/03/23 PHP
php准确获取文件MIME类型的方法
2015/06/17 PHP
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
javascript截取字符串小结
2015/04/28 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
2017/01/05 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
仅用50行代码实现一个Python编写的计算器的教程
2015/04/17 Python
Django中Forms的使用代码解析
2018/02/10 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
在Python中使用MySQL--PyMySQL的基本使用方法
2019/11/19 Python
浅谈Python type的使用
2019/11/19 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
盛大二次面试题
2016/11/18 面试题
计算机应届毕业生自荐信范文
2014/02/23 职场文书
挂牌仪式策划方案
2014/05/18 职场文书
长城导游词300字
2015/01/30 职场文书
护士实习自荐信
2015/03/06 职场文书
毕业感言怎么写
2015/07/31 职场文书
使用 CSS 轻松实现一些高频出现的奇形怪状按钮
2021/12/06 HTML / CSS