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