Node.js readline 逐行读取、写入文件内容的示例

本文介绍了运用readline逐行读取的两种实现,分享给大家,具体如下:

什么是Readline

Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流。使用require(“readline”)可以引用模块。

效果图如下:

左边1.log 为源文件

右边1.readline.log为复制后的文件

下边为命令行输出

实现方式一:

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...');
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Node.js readline模块与util模块的使用
  • Node.js用readline模块实现输入输出
(0)

相关推荐

  • Node.js readline模块与util模块的使用

    1. 使用readline模块逐行读取流数据 1.1. 创建Interface对象 在readline模块中,通过Interface对象的使用来实现逐行读取流数据的处理.因此首先要创建Interface对象,在readline模块中,可以通过createInterface方法来创建Interface对象.readline.createInterface(options),options为一个对象,属性如下 input: 属性值为一个可用来读取流数据的对象,用于指定读入数据的来源. output:

  • Node.js用readline模块实现输入输出

    什么是Readline Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流.使用require("readline")可以引用模块. 如何使用Readline 以使用为角度的话,学习Readline,我们需要学习它的三个部分: 创建Readline实例 学习里面的接口方法 学习监听与处理Readline事件 下面我们通过实例来学习这三个部分. 实例1:我叫小明 代码如下: /** * Created by Administrat

  • 纯JS实现的读取excel文件内容功能示例【支持所有浏览器】

    本文实例讲述了纯JS实现的读取excel文件内容功能.分享给大家供大家参考,具体如下: template.html <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JS-XLSX Live Demo</title> <link href="../css/boots

  • Node.js readline 逐行读取、写入文件内容的示例

    本文介绍了运用readline逐行读取的两种实现,分享给大家,具体如下: 什么是Readline Readline是Node.js里实现标准输入输出的封装好的模块,通过这个模块我们可以以逐行的方式读取数据流.使用require("readline")可以引用模块. 效果图如下: 左边1.log 为源文件 右边1.readline.log为复制后的文件 下边为命令行输出 实现方式一: var readline = require('readline'); var fs = require

  • node.js实现逐行读取文件内容的代码

    在此之前先介绍一个逐行读取文件内容NPM:https://github.com/nickewing/line-reader,需要的朋友可以看看. 直接上代码: function readLines(input, func) { var remaining = ''; input.on('data', function(data) { remaining += data; var index = remaining.indexOf('\n'); while (index > -1) { var l

  • node.js生成与读取csv文件方法详解

    nodejs使用object-to-CSV库生成csv文件 object-to-CSV是一个非常棒的库,可以使用nodejs将对象数组快速写入CSV文件. 当然,还有许多其他的库.只是俺发现这对于俺的一个项目非常有用,因为俺必须生成一个一次性的CSV文件,所以俺编写了这个小教程. 在更面向性能的应用程序中,使用基于流的库(如fast-csv)可能适合您的需要. npm install objects-to-csv 引入库: const ObjectsToCsv = require('object

  • Node.js利用console输出日志文件的方法示例

    通常我们在写Node.js程序时,都习惯使用console.log打印日志信息,但这也仅限于控制台输出,有时候我们需要将信息输出到日志文件中,实际上利用console也可以达到这个目的的,今天就来简单介绍一下. 我们首先创建如下文件: // index.js let fs = require('fs'); let options = { flags: 'a', // append模式 encoding: 'utf8', // utf8编码 }; let stdout = fs.createWri

  • node.js readline和line-reader逐行读取文件方法

    逐行读取文件的能力允许我们读取大文件,而无需将其全部存储到内存中.它有助于节省资源和提高应用程序的效率. 它允许我们寻找所需的信息,一旦找到了相关的信息,我们可以停止搜索过程,可以防止不必要的内存使用. 我们将使用Readline模块和Line-Reader模块来实现这一目标. 方法一 readline 使用Readline模块:Readline是Node的原生模块.它是专门为从任何可读流逐行读取内容而开发的.它可用于从命令行读取数据. 因为模块是Node的本机模块.js,它不需要任何安装,可以

  • C#读取写入文件的3种方式示例代码

    目录 1:二进制读写 2:泛型读写: 3:XML读写:不是很稳定 最终效果: 总结 最新对文件的操作比较频繁.这里记录一下常用的几种文件读写的方式. 我这里使用窗体来做测试. 1:二进制读写 /// <summary> /// 二进制写入文件 /// </summary> private void button1_Click(object sender, EventArgs e) { SaveFileDialog saveDlg = new SaveFileDialog(); sa

  • Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法

    fs模块.js: /* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创建目录) 4. fs.appendFile 写入追加文件 5.fs.readFile 读取文件 6.fs.readdir 读取目录 7.fs.rename 重命名 8. fs.rmdir 删除目录 9. fs.unlink 删除文件 */ var fs=require('fs');

  • JS实现读取Excel文件内容并生成二维码

    目录 需求 实现方案 puppeteer node-canvas 浏览器 问题分解 具体实现 启动一个本地服务器 创建html,引入资源库 解析xls文件 写入中间logo 写入底部文字 canvas转化为图片,并下载到本地 递归调用 最终效果 需求 一次普通的技术需求会议 ​ 项目经理首先发言 我们技术这边需要将xls表格中的几千条数据变成二维码,并且中间镶嵌logo,图片底部放置编号,由于xls表格数据私密,不能通过第三方完成 ​ 平常这个事情都是后端处理的,前端就是来摸鱼的,但是这次一反常

  • node.js通过url读取文件

    本文实例为大家分享了node.js通过url读取文件的具体代码,供大家参考,具体内容如下 在浏览器地址栏中输入127.0.0.1:3000和127.0.0.1:3000/node时,读取node.html文件,输入127.0.0.1:3000/banner时读取banner.json文件 准备工作 首先我们在www的文件目录下新建两个文件,一个是node.htnl,一个是banner.json,并在文件中添加一点内容 1.新建01.js文件并导入模块 let fs = require("fs&q

随机推荐