使用pipe()处理大文件
在使用大文件复制的案例中,通过可读流的chunk参数来传递数据,如果把数据比作是水,这个chunk就相当于盆,使用盆来完成水的传递。在可读流中还有一个函数叫作pipe(),这个函数是一个很高效的文件处理方式,可以简化之前复制文件的操作,pipe翻译成中文是管子的意思,使用pipe()进行文件复制相当于把盆换成管子,通过管子来完成数据的读取和写入。
下面通过案例来演示如何使用pipe()处理大文件复制,具体步骤如下:
-
在chapter05中创建文件input.txt, 在该文件中添加内容“老师是我心中的太阳,她教给了我们知识”。这里在保存input.txt的时候一定要把编码格式修改为utf8,否则最后会出现错误。
-
在chapter05目录中创建文件demo5-7.js, 并在该文件中添加如下代码。
demo5-7.js:
/*
* 使用pipe()进行文件复制
*/
var fs=require("fs");
//源文件路径
var srcPath='E:\Liu\node.js学习\chapter05\input.txt';
//目标文件路径
var distPath='E:\Liu\node.js学习\chapter05\output1.txt';
var readableStream=fs.createReadStream(srcPath);
var writableStream=fs.createWriteStream(distPath);
// 可以通过使用可读流的函数pipe () 接入到可写流中
//pipe()是一个很高效的数据处理方式
if(readableStream.pipe(writableStream)) {
console.log('文件复制成功了')
}else{
console.log('文件复制失败了')
}
在上述代码中,srcPath 为源文件路径,distPath为目标文件路径,将srcPah传入createReadSream()函数,然后通过可读流调用pipe()函数,将可写流作为参数传入完成文件的复制。
打开终端,执行demo5-7.js,结果如图所示。
从上图中可以看出,读/写操作没有提示错误,表示文件复制成功,这时打开chapter05目录可以看到output1.txt文件,打开output1.txt文件,可以看到与input.txt文件中相同的内容,如图所示。
来源:CSDN
作者:weixin_43446193
链接:https://blog.csdn.net/weixin_43446193/article/details/104757690