Node.js-文件系统之文件流操作

本文详细介绍了Node.js中流操作的使用方法,包括读取流、写入流的创建及事件监听,以及如何使用流复制文件,适用于大文件处理场景。

流(strem)在node.js中是处理流数据的抽象接口。

8. 流操作

(2)读取流

  • Fs.createReadStream()
  • readStream对象:

     例子:

// 导入文件系统
const fs = require('fs');
// 可读流 读取流
// 创建读取流
const rs = fs.createReadStream('file/1.txt',{});
rs.on('open',function () {
    console.log('可读流开启');
});
// chunk接收的内容
rs.on('data',function (chunk) {
    console.log(chunk.toString());
});
rs.on('end',function () {
    console.log('读取完毕');
});
rs.on('close',function () {
    console.log('可读流完毕');
});

(2)写入流

  • Fs.createWriteStream()
  • writeStream

例子:

// 导入文件系统
const fs = require('fs');
// 创建可写流
const ws = fs.createWriteStream('file/2.txt',{});
ws.write('你好世界');
// 必须手工结束,可写流中没有ws.on('end')
ws.end();
ws.on('open',function (fd) {
    console.log('文件已打开,可写流开始');
});
ws.on('close',function () {
    console.log('可写流关闭');
});

(3)使用流复制文件

  • 用于复制大文件

   例子:

// 导入文件系统
const fs = require('fs');
// 大型文件的复制,把内容从可读流中复制到可写流中
// 创建可读流
const rs = fs.createReadStream('file/1.txt');
// 创建可写流
const ws = fs.createWriteStream('file/3.txt');
let buf = Buffer.alloc(0);
rs.on('data',function (chunk) {
    // 拼接从流中读取的内容
    buf = Buffer.concat([buf,chunk]);
});
rs.on('end',function () {
    ws.write(buf);
    ws.end();
});
ws.on('close',function () {
    console.log('文件复制成功');
});
  • pipe管道

例子:

// 导入文件系统
const fs = require('fs');
// 大型文件复制
const rs = fs.createReadStream('file/2.txt');
const ws = fs.createWriteStream('file/4.txt');
// 使用管道,把内容从可读流中复制到可写流中
rs.pipe(ws);
ws.on('close',function () {
    console.log('文件复制成功');
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值