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

1、readline模块

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

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

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

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

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

图片描述

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

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

图片描述

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

使用npm进行下载并引包编码

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

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

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

其余的代码与以前的同样。code

2、文件流操做

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

一、引入核心模块(fs模块与path模块)
const fs = require('fs');
const path = require('path');
二、建立文件读取流与文件写入流
var reader = fs.createReadStream(readFilename);
var writer = fs.createWriteStream(writeFilename);

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

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

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

相关文章
相关标签/搜索