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
JS的Document属性和方法小结
Sep 17 Javascript
如何学习Javascript入门指导
Nov 01 Javascript
js动态删除div元素基本思路及实现代码
May 08 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 Javascript
ajax如何实现页面局部跳转与结果返回
Aug 24 Javascript
Node.js静态文件服务器改进版
Jan 10 Javascript
JavaScript制作简单的日历效果
Mar 10 Javascript
Node.js+Express配置入门教程详解
May 19 Javascript
CryptoJS中AES实现前后端通用加解密技术
Dec 18 Javascript
JS严格模式原理与用法实例分析
Apr 27 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
escape unescape的php下的实现方法
2007/04/27 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
浅析Javascript使用include/require
2013/11/13 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
Vue2.x中的父组件传递数据至子组件的方法
2017/05/01 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
2020/07/22 Javascript
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python自定义函数实现最大值的输出方法
2019/07/09 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
.dcm格式文件软件读取及python处理详解
2020/01/16 Python
python利用线程实现多任务
2020/09/18 Python
如何利用Python 进行边缘检测
2020/10/14 Python
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
公司业务主管岗位职责
2013/12/07 职场文书
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
关于安全的广播稿
2014/10/23 职场文书
安全生产奖惩制度
2015/08/06 职场文书
赡养老人协议书范本
2015/08/06 职场文书
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js