当前位置: 首页 > 后端技术 > Node.js

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

时间:2023-04-03 11:18:44 Node.js

1.readline模块使用node.js中内置的readline模块,保证每次只读取一行文本。使用时,相关的内置模块包括fs模块和path模块。1.引用相关模块constfs=require('fs');constpath=require('路径');constreadline=require('readline');2.创建文件流读取器varrl=readline.createInterface({input:fs.createReadStream(filename)});其中filename表示文件的绝对物理路径,可以通过path.join()和__dirname拼接完成。3.读取一行文本rl.on('line',(line)=>{});文件流阅读器每读到一行文本就会触发这个回调函数的执行。4.在控制台使用readline模块的简单应用。首先,使用constreadline=require('readline');引入包,并使用constrl=readline.createInterface(process.stdin,process.stdout);创建输入输出流接口,然后使用rl.on('line',(line)=>{});,用户在控制台输入一行数据后,该事件触发其回调函数的执行,回车,回调函数行是用户输入的数据行,是字符串类型。由于数据中可能包含回车符和换行符,所以我们通常的处理是line.trim();5.代码转换模块iconv-lite在readline模块中使用npm下载并引用包consticonvLite=require('iconv-lite');从输入源进行编码转换:fs.createReadStream(filename)流。varrl=readline.createInterface({input:fs.createReadStream(filename).pipe(iconvLite.decodeStream('gbk'))});其他代码同上。2.文件流操作之前我们在涉及文件的读写操作时使用了fs.readFile()和fs.writeFile()这两个方法。这两种方式都是一次性读取文本内容,导致文件操作过程中占用内存空间大,容易造成机器卡顿。所以,我们在拷贝大文件的时候,通常会使用文件流的方式,而最常用的是.pipe()方式。1.导入核心模块(fs模块和path模块)constfs=require('fs');constpath=require('路径');2.创建文件读流和文件写流varreader=fs.createReadStream(readFilename);varwriter=fs.createWriteStream(writeFilename);其中,readFilename是要读取的文件的绝对物理路径,writeFilename是要写入的文件的绝对物理路径。3、使用.pipe()方法连接reader.pipe(writer);reader.on('end',()=>{console.log('文件复制完成!');});这种方式相当于从一个管道开始,从读流连接到写流,数据以流的形式不断传输。这个方法会自动帮我们控制缓冲区的大小,当数据传输完成后,会自动退出当前程序。结束事件在数据传递完成后触发回调函数。