zoukankan      html  css  js  c++  java
  • node.js 从文件流中读写数据及管道流

    读取数据

    // 引入 fs 模块
    const fs = require('fs');
    
    // 创建可读流
    let readStream = fs.createReadStream('index.txt');
    
    // 保存数据
    let str = ''
    // 读取次数
    let count = 0;
    
    // 处理流事件 data - 当有数据可读时触发。
    
    readStream.on('data',(chunk)=>{
        str += chunk;
        count++;
    })
    
    // end - 没有更多的数据可读时触发。
    readStream.on('end',(chunk)=>{
        console.log(str)
        console.log(count);
    })
    
    // error - 在接收和写入过程中发生错误时触发。
    readStream.on('error',(err)=>{
        console.log(err);
    })

    结果如下:

    成功读取到文本内容,且文件较大时,会分次读取,这里分两次读取

    写入数据

    const fs = require('fs');
    
    let data = '我是从数据库获取的数据,我要以文件流的方式保存起来
    ';
    
    // 创建一个可以写入的流,写入到文件 output.txt 中
    let writeStream = fs.createWriteStream('output.txt');
    
    for(let i = 0;i < 100; i++){
        writeStream.write(data,'utf8');
    }
    
    // 标记写入完成
    writeStream.end();
    
    writeStream.on('finish',()=>{
        console.log('写入完成');
    })
    
    writeStream.on('error',()=>{
        console.log('写入失败');
    })

    output.txt 文件写入了 100 条数据 

    注意: end() 方法 会触发 finish 方法,如果不标记 end , 则无法触发 finish 方法,所以,建议大家写入完成标记end

    管道流:

    针对大型文件的复制

    const fs = require('fs');
    
    // 创建一个可读流
    let readStream = fs.createReadStream('index.txt');
    // 创建一个可写流
    let writeStream = fs.createWriteStream('output.txt');
    
    // 管道读写操作
    // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
    readStream.pipe(writeStream);
    console.log('执行完毕');
  • 相关阅读:
    LeetCode 326. Power of Three
    LeetCode 324. Wiggle Sort II
    LeetCode 322. Coin Change
    LeetCode 321. Create Maximum Number
    LeetCode 319. Bulb Switcher
    LeetCode 318. Maximum Product of Word Lengths
    LeetCode 310. Minimum Height Trees (DFS)
    个人站点大开发!--起始篇
    LeetCode 313. Super Ugly Number
    LeetCode 309. Best Time to Buy and Sell Stock with Cooldown (DP)
  • 原文地址:https://www.cnblogs.com/Sky-Ice/p/9366069.html
Copyright © 2011-2022 走看看