Node.js中的文件流的意义及详细方法

什么是文件流?

首先因为 在文件读写里非常抽象,所以并不能明显确定。
这里打个比方说明一下(也不知道形象不):

比如说一个地方发生火灾了,消防队来灭火,消防队的水车就好比一个文件,读文件及文件流的话就好比把水运过去灭火的方式。

读文件 就类似:你拿一个桶来水车这边接水,然后 必须 等接满了再提过去灭火。如果火势很小蔓延很慢 的话,还可以用这种方法灭火(这里相对于是文件比较小的时候 )。很显然这种方法有弊端:如果火势很大,蔓延很快的话,等你一桶水接完,火势已经发展到是一桶水解决不了的了。

文件流 就类似:火势特别大的情况(这里相对于是文件特别大的时候)这个时候你再来用桶接水,那很显然是灭不了火的。所以消防车上都配有高压水枪,水枪头对准火源,水枪尾连接到车水,然后水车里的水通过水枪流动到火灾地。(这个时候就好比用文件流的方式

为什么要用文件流?

文件读取 比作上面的灭火,如果这个火灾特别大怎么办?用桶接水多久才能灭火?
因此便会有了 文件流 ,文件流就好比你直接打开水枪就能灭火,不用桶接水也不用等水接满。

文件流的分类

1.读取流
读取一个文件的内容

const fs  = require('fs')
const path = require('path')
const filename = path.resolve(__dirname,'./4.txt')
const read = fs.createReadStream(filename,{
    // 设置读取文件的格式
    encoding:'utf-8',
    // 控制每次读取的字符数
    highWaterMark:1
})
read.on('open',() => console.log('打开文件'))
read.on('data',chunk => console.log('读取到的部分数据:',chunk))
read.on('end',() => console.log('数据全部读取完成'))

4.txt 里面的内容为 hello world
在这里插入图片描述

1.写入流
向一个文件中写入要添加的数据

flags:“a” 此方法用于在文件夹后面追加 不追加的话就会覆盖掉原文件的内容

const fs  = require('fs')
const path = require('path')
const filename = path.resolve(__dirname,'./4.txt')

const ws = fs.createWriteStream(filename,{
    encoding:'utf-8',
    highWaterMark:2,
    // 此方法用于在文件夹后面追加 不追加的话就会覆盖掉原文件的内容
    flags:'a'
})
ws.write("123")
ws.write("222")
ws.write("333")
ws.write("444")
ws.write("555")

在这里插入图片描述
3.双工流
读取一个文件内容,将内容写到另一个文件中去

用法: 要读的文件 . pipe(要写入的文件)

const fs  = require('fs')
const path = require('path')
const filename = path.resolve(__dirname,'./4.txt')

const ws = fs.createWriteStream('./4.txt')
const read = fs.createReadStream('./5.txt')
// 读取 ./4.txt 文件  并写入到  ./5.txt 文件中去
read.pipe(ws)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值