[]运用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. linux 项目自动部署脚本

    1.使用maven获取源码部署,并可替换配置文件(金融数据分析平台) #!/bin/bash#设置变量cd /home#停止tomcatecho "开始停止tomcat..." p ...

  2. Selenium Firefox 官方Webdriver -- Geckodriver 下载地址

    Selenium Firefox 官方Webdriver -- Geckodriver 下载地址 https://github.com/mozilla/geckodriver/releases

  3. java反射——构造方法

    大家都知道反射技术在Java里面时非常重要的一个技术点,因为Java好多框架的编写都是基于反射的,别的不多说,spring框架里面的IOC就是基于反射实现.那么什么是反射呢?JAVA反射机制是在运行状 ...

  4. 使用ODBC 数据库 ,运行程序时 出现 “遇到不适当的参数”

    我知道的一种情况是 数据库打开了,没有关闭,再次调用数据库打开函数,会出现这样错误.当然是打开同一个数据库同一张表.

  5. 我有一台 PC,上面有摄像头,怎么进行一场直播?

    如何推流与播放_Web端直播实践_最佳实践_视频直播-阿里云 https://help.aliyun.com/document_detail/57251.html?spm=a2c4g.11186623 ...

  6. PHP数组遍历详解

    一.PHP数组简介 1.PHP数组的分类 按照下标的不同分为关联数组和索引数组①索引数组:下标从0开始依次增长②关联数组:下标为字符串格式,每个下标字符串与数组的值一一对应,(有点像对象的键值对) 下 ...

  7. Yii2.0的乐观锁与悲观锁(转)

    原文:Yii2.0的乐观锁与悲观锁 Web应用往往面临多用户环境,这种情况下的并发写入控制, 几乎成为每个开发人员都必须掌握的一项技能. 在并发环境下,有可能会出现脏读(Dirty Read).不可重 ...

  8. exp导出一个表中符合查询条件的数据

    原文地址:exp导出一个表中符合查询条件的数据 作者:charsi 导出一个表中的部分数据,使用QUERY参数,如下导出select * from test where object_id>50 ...

  9. Centos7管理selinux及使用firewalld管理防火墙

    CentOS 7.0默认使用的是firewall作为防火墙 1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status ...

  10. python识别一段由字母组成的字符串是拼音还是英文单词

    环境:win10 python3.6 先说一下算法思想: 首先建立本地拼音库(不带声调).使用贪婪算法将字符串从左向右扫描,将字符串与本地拼音库(这里提供给大家一个)进行匹配,当发现匹配成功时继续扫描 ...