索鸟网

  1. 首页
  2. node.js当中的readline模块与文件流操作

node.js当中的readline模块与文件流操作


一、readline模块

使用node.js当中的可以使用内置的readline模块来确保每次只读取文本当中一行的内容。使用时,与之相关的内置模块还有fs模块与path模块。

1、引用相关模块
const fs = require("fs");
const path = require("path");
const readline = require("readline");
2、创建文件流读取器
var rl = readline.createInterface({
    input:fs.createReadStream(filename)
});

其中filename代表该文件的绝对物理路径,可使用path.join()__dirname拼接完成。

3、读取文本当中的一行内容
rl.on("line",(line)=>{
    
});

该文件流读取器每次读取文本当中一行的内容即触发执行一次该回调函数。

4、使用readline模块在控制台中的简单应用

先用const readline = require("readline");来引包,使用const rl = readline.createInterface(process.stdin,process.stdout);来创建输入和输出流的界面,之后使用rl.on("line",(line)=>{});,该事件在用户在控制台当中输入一行数据,并敲回车之后触发执行其回调函数,回调函数当中的line即为用户输入的这一行数据,为字符串类型,由于该数据当中可能包含回车换行符,我们通常的处理为line.trim();

5、编码转换模块iconv-litereadline模块当中的使用

使用npm进行下载并引包

const iconvLite = require("iconv-lite");

input:fs.createReadStream(filename) 流的源头就进行编码转换。

var rl = readline.createInterface({
    input:fs.createReadStream(filename).pipe(iconvLite.decodeStream("gbk"))
});

其他的代码与之前的一样。

二、文件流操作

之前我们在涉及文件的读写操作时都用的是fs.readFile()fs.writeFile()这两个方法。这两种方法都是对文本内容进行一次性读取,造成在文件操作的过程中占用较大的内存空间,容易导致机器卡顿。所以我们在对大文件进行拷贝操作时,通常使用文件流的方式,最常使用.pipe()方法。

1、引入核心模块(fs模块与path模块)
const fs = require("fs");
const path = require("path");
2、创建文件读取流与文件写入流
var reader = fs.createReadStream(readFilename);
var writer = fs.createWriteStream(writeFilename);

其中readFilename为被读取文件的绝对物理路径,writeFilename为被写入文件的绝对物理路径。

3、使用.pipe()方法进行连接
reader.pipe(writer);
reader.on("end",()=>{
    console.log("文件拷贝完成!");
});

该方法相当于从读取流当中接一根管道到写入流当中,数据源源不断地以流的形式进行传递,该方法内部会自动帮我们控制缓冲区的大小,当数据传递完毕时,会自动退出当前程序。end事件在数据传递完毕之后触发该回调函数。

node.js

来源地址:https://segmentfault.com/a/1190000011378384 版权归作者所有!

相关教程

  • node.js当中的http模块与url模块的简单介绍

    一、http模块的简单介绍 node.js当中的http内置模块可以用于创建http服务器与http客户端。 1、引包 const http = require("http"); 2、创建http服务器 var server = http.createServer((req,res)=>{ }); 使用http的.createServer()方法
  • node.js当中的全局成员与path模块的使用

    一、node.js全局成员 1、global 在浏览器的平台环境当中,全局对象为window,即任何一个定义在全局环境当中的变量都可以用window这个对象获取到。node环境当中的全局对象为global,它类似于客户端javascript运行环境当中的window。 2、process 该对象用于获取当前Node进程的信息,一般用于获取环境变量之类的
  • node.js当中fs模块的常用API总结

    node.js当中的fs模块与readline模块主要对应着系统的文件操作,node当中的文件操作和网络操作都属于阻塞性操作,故存在着大量的异步回调函数,其回调函数遵循上一篇文章介绍的 node.js当中对于回调函数的规定 的规则。并且为了避免出错,凡是涉及文件操作,我们一律使用文件的绝对物理路径来传递文件路径参数,这里常用的为path.join()和_
  • node - 收藏集 - 掘金

    Nodejs进阶:MD5入门介绍及crypto模块的应用 - 掘金本文摘录自《Nodejs学习笔记》,更多章节及更新,请访问 github主页地址。欢迎加群交流,群号 197339705。 简介 MD5(Message-Digest Algorithm)是计算机安全领域广泛使用的散列函数(又称哈希算法、摘要算法),主要用来... Nodejs 进阶:用
  • php 文件与流

    1.复制文件 $fp = fopen("index.html","rb+");//读取index.html内容 可读 $block = fread($fp,4096);//读取index.html文件4096字节 $url = fopen("haha.html","w");//打开或创建haha.html 并可写 fwrite($url,$block);
  • node.js当中net模块的简单应用(基于控制台的点对点通信)

    我们可以使用node.js当中内置的net模块来创建socket服务端和socket客户端,实现一个简单的基于控制台的点对点通信。 一、利用net模块建立socket客户端 1、引包 const net = require("net"); 2、与指定IP地址和端口号的服务端建立连接 const client = net.connect({port:num
  • 初识Node.js

    Node.js简介 Node 定义 Node.js是一个建立在Chrome v8 引擎上的javascript运行时环境 Node 特点 异步事件驱动 node.js使用回调函数的方式来处理阻塞事件,node.js维护一个线程池,当遇到阻塞事件时,就从线程池中取出一个线程来执行阻塞事件,然后执行回调函数,线程归还线程池。 非阻塞IO 单线程 可以通过
  • node.js - 收藏集 - 掘金

    如何部署 Node.js 应用 - 后端 - 掘金当你熟悉 Node.js 之后很可能会自己写些小东西放在 VPS 上跑,比如说一个个人的 API 服务,或者是你的网站。这篇文章分享的内容不管你的 app 大小,都相对适用,因为我们的原则是「run it forever and deploy it smart... Node.js 开启 Https 的小