美文网首页
Node.js学习——fs的流管道流,复制图片,文件

Node.js学习——fs的流管道流,复制图片,文件

作者: wxyzcctn | 来源:发表于2022-01-23 21:40 被阅读0次

    写入流

    const fs = require('fs');
    
    let str = '';
    
    for(let i = 0; i < 500; i++){
        str += '这是一条字符串数据,已经被保存了\n';
    }
    
    let writeStream = fs.createWriteStream('../data/outPut.txt',{
            // flags: 'r+',
            // start: 7500
        }
    );
    
    // 此时的写入也是一点一点的写入的
    writeStream.write(str);
    
    // 使用 utf8 编码写入数据
    // writerStream.write(str, 'UTF8');
    
    // 监听写入时的报错
    writerStream.on('error', function (err) {
        console.log(err.stack);
    });
    
    // 标记写入完成
    writeStream.end();
     
    // 如果不标记写入完成就无法监听finish状态,就算写入完成也无法监听到finish状态
    writeStream.on('finish',()=>{
        console.log('写入完成');
    });
    

    读取流

    const fs = require('fs');
    
    let readStream = fs.createReadStream('../data/outPut.txt');
    
    let count = 0;
    let str = '';
    
    // 设置编码为 utf8。
    // readerStream.setEncoding('UTF8');
    
    // 如果文件内容太大就会分为多次读取,监听data会一直不断的读取文件中的所有内容,直到所有内容都被读取完为止
    readStream.on('data',(data)=>{
        str+=data;
        count++;
    })
    
    // 监听流读取结束
    readStream.on('end',()=>{
        console.log(str);
        console.log(count);
    })
    
    // 监听流读取出错
    readStream.on('error',(err)=>{
        console.log(err);
    })
    

    管道流

    主要用来复制大文件,可以用来复制图片,压缩包

    const fs = require('fs');
    
    let read = fs.createReadStream('../Pictures.rar');
    
    let write = fs.createWriteStream('../data/Pictures.zip');
    
    read.pipe(write);
    

    链式流

    文件压缩和解压

    # 创建文件压缩。
    const fs = require("fs");
    const zlib = require('zlib'); // 引入用于压缩文件的模块
    
    // 压缩 input.txt 文件为 input.txt.rar
    fs.createReadStream('input.txt')
        .pipe(zlib.createGzip())
        .pipe(fs.createWriteStream('input.txt.rar')); // 这里的input最好带上扩展名.txt,否则解压出来的文件没有扩展名
    
    # 文件解压。
    var fs = require("fs");
    var zlib = require('zlib');
    
    // 解压 input.txt.rar 文件为 input.txt
    fs.createReadStream('input.txt.rar')
        .pipe(zlib.createGunzip())
        .pipe(fs.createWriteStream('input.txt'));
    

    相关文章

      网友评论

          本文标题:Node.js学习——fs的流管道流,复制图片,文件

          本文链接:https://www.haomeiwen.com/subject/kzwlxrtx.html