[]运用readline逐行读取的两种实现

效果图如下:

左边1.log 为源文件

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

下边为命令行输出

实现方式一:

[javascript] view plain copy
  1. var readline = require('readline');
  2. var fs = require('fs');
  3. var os = require('os');
  4. var fReadName = './1.log';
  5. var fWriteName = './1.readline.log';
  6. var fRead = fs.createReadStream(fReadName);
  7. var fWrite = fs.createWriteStream(fWriteName);
  8. var objReadline = readline.createInterface({
  9. input: fRead,
  10. // 这是另一种复制方式,这样on('line')里就不必再调用fWrite.write(line),当只是纯粹复制文件时推荐使用
  11. // 但文件末尾会多算一次index计数   sodino.com
  12. //  output: fWrite,
  13. //  terminal: true
  14. });
  15. var index = 1;
  16. objReadline.on('line', (line)=>{
  17. var tmp = 'line' + index.toString() + ':' + line;
  18. fWrite.write(tmp + os.EOL); // 下一行
  19. console.log(index, line);
  20. index ++;
  21. });
  22. objReadline.on('close', ()=>{
  23. console.log('readline close...');
  24. });

实现方式二:

[javascript] view plain copy
  1. var readline = require('readline');
  2. var fs = require('fs');
  3. var os = require('os');
  4. var fReadName = './1.log';
  5. var fWriteName = './1.readline.log';
  6. var fRead = fs.createReadStream(fReadName);
  7. var fWrite = fs.createWriteStream(fWriteName);
  8. var enableWriteIndex = true;
  9. fRead.on('end', ()=>{
  10. console.log('end');
  11. enableWriteIndex = false;
  12. });
  13. var objReadline = readline.createInterface({
  14. input: fRead,
  15. output: fWrite,
  16. terminal: true
  17. });
  18. var index = 1;
  19. fWrite.write('line' + index.toString() +':');
  20. objReadline.on('line', (line)=>{
  21. console.log(index, line);
  22. if (enableWriteIndex) {
  23. // 由于readline::output是先写入后调用的on('line')事件,
  24. // 所以已经读取文件完毕时就不需要再写行号了... sodino.com
  25. index ++;
  26. var tmp = 'line' + index.toString() + ':';
  27. fWrite.write(tmp);
  28. }
  29. });
  30. objReadline.on('close', ()=>{
  31. console.log('readline close...');
  32. });

【Node.js】'readline' 逐行读取、写入文件内容的更多相关文章

  1. php逐行读取.txt文件内容,并解析每行内容

    // 读取nlp text 并存到mongodb public function readNLP(&$errorCode,&$errorMessage) { try{ // $_SER ...

  2. Node.js高效按行输出文件内容

    const fs = require('fs'); const EventEmitter = require('events'); const util = require('util'); cons ...

  3. 手工创建tomcat应用,以及实现js读取本地文件内容

    手工创建tomcat应用: 1.在webapps下面新建应用目录文件夹 2.在文件夹下创建或是从其他应用中复制:META-INF,WEB-INF这两个文件夹, 其中META-INF清空里面,WEB-I ...

  4. 关于Python中读取写入文件并进行文件与用户交互的操作

    一.提前知识点 在python中是同样和其他语言一样可以进行文件的读取写入操作,值得注意的是,Python中打开文件读取的方式有几种,分别是以下几种: f = open('username.txt') ...

  5. Java基础面试操作题:读取该文件内容,并按照自然顺序排序后输出到 另一个文件中

    package com.swift; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...

  6. 在 Node.js 中处理大 JSON 文件

    在 Node.js 中处理大 JSON 文件 场景描述 问题一: 假设现在有一个场景,有一个大的 JSON 文件,需要读取每一条数据经过处理之后输出到一个文件或生成报表数据,怎么能够流式的每次读取一条 ...

  7. 读取Zip文件内容

    第一步,上次文件并保存到服务器目录下 /// <summary> /// 上传压缩文件 /// </summary> protected void UploadZip() { ...

  8. java读取txt文件内容

    package read; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public ...

  9. 别再用"while (!feof(file))"来逐行读取txt文件了!

    起因 执行一个C/C++程序出现segment fault.它逐行读取文本文件,每一行是一个图片名字,然后读图.处理图像,etc. 发现最后一次读取的文件名不存在(空的). 正确的逐行读取txt文件 ...

随机推荐

  1. 面试STAR法则

    昨天投了几家公司的简历,A公司还没看简历,B公司没有通过简历,另外的后说(其实只投了这两家),B公司最终给了蛮中肯的回复: 虽然,一开始看到这样的结果,有些失落,仔细看过回复后,有些不屑和好奇.百度了 ...

  2. java的double类型如何精确到一位小数?

    java的double类型如何精确到一位小数? //分钟转小时vacationNum = (double)Math.round(vacationNum/60*10)/10.0;overTimeNum ...

  3. 巨蟒python全栈开发-第19天 核能来袭-反射

    一.今日主要内容 1.isinstance,type,issubclass A.isinstance: 判断你给对象是否是xx类型的. (向上判断) B.type: 返回xxx对象的数据类型 C.is ...

  4. php 使用imagettftext()函数出问题的原因

    <?php header('Content-type: image/png'); $im = imagecreatetruecolor(400, 300); //创建画布 $white = im ...

  5. <2014 04 15> C++语言回顾精要(原创By Andrew)

    C++语言回顾精要 <Visual C++程序设计>张岳新,这本书是很多学校的本科生C++教学用书,今天重新拿来翻了一遍.跟很多国人写的技术书籍一样,写书并不是为了让初学者看懂入门,而是为 ...

  6. 剑指Offer——从尾到头打印链表

    题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 分析: 方法1:利用栈的性质,先从头到尾遍历链表每个节点的值存入栈中,最后一个一个出栈顺序便是从尾到头的. 方法2:直接从头到尾遍历链表存储节 ...

  7. python项目环境的导出、导入

    导出开发环境 pip freeze > requirements.txt # 文件导出路径 导入环境 pip install -r requirements.txt # pip 则会自动下载安装 ...

  8. Tomcat 自定义默认网站目录

    上面访问的网址为http://192.168.0.108:8080/memtest/meminfo.jsp 需求: 现在我想访问格式为http://192.168.0.108:8080/meminfo ...

  9. C++异常安全、copy and swap

    异常安全的代码是指,满足两个条件 1异常中立性 : 是指当你的代码(包括你调用的代码)引发异常时,这个异常 能保持原样传递到外层调用代码.(异常中立,就是指任何底层的异常都会抛出到上层,也就相当于是异 ...

  10. APP数据埋点分类方式

    1.数据埋点的重要性     在现实工作中,数据的整体流程为:数据生产-数据采集-数据处理-数据分析和挖掘-数据可视化,其中,数据采集是很重要的一个环节,数据采集得全不全.对不对,直接决定数据广度和质 ...