Node.js10---stream流模块及pipe管道

stream流模块

fs.createReadStream( )读流

stream是Node.js提供的又一个仅在服务区端可用的模块,目的是支持"流"这种数据结构。超大文件的读写我们采用stream流。如下例,读流:
请添加图片描述
代码如下:

//stream流适用于对大文件的读写

const fs = require('fs')
const rs = fs.createReadStream("./avatar/a.txt", "utf-8")
rs.on("data", (chunk) => {
    
    
    console.log("chunk", chunk)
})

rs.on("end", () => {
    
    
    console.log("end")
})

rs.on("error", (err) => {
    
    
    console.log(err)
})

fs.createWriteStream( )写流

可以读流就可以写流,现在看一下写流,如下代码执行后发现a.txt里就写成了11111111111112233333:

const fs = require('fs')
const ws = fs.createWriteStream("./avatar/a.txt", "utf-8")
ws.write("1111111111111")
ws.write("22")
ws.write("33333")
//写流结束
ws.end()

管道pipe

当读流和写流同时存在时,怎么控制好流速保证写流完了再读流呢,这个时候在创建好可读流之后用到管道pipe就能实现这个效果.如下例,1.txt里有四行数字,2.txt里啥都没有,当执行完代码后2.txt里就有了跟1.txt里一模一样的内容,所以说,管道pipe是复制文件的一种方法

//fs.js
const fs = require('fs')
const readStream = fs.createReadStream("./1.txt")
const writeStream = fs.createWriteStream("./2.txt")
readStream.pipe(writeStream)
//1.txt
1111
2222
3333
4444
//2.txt
1111
2222
3333
4444

猜你喜欢

转载自blog.csdn.net/qq_37635012/article/details/127416489