Skip to content

Stream流

Stream流.js
js
/**
 * Stream流
*/
const fs = require('fs');
const reader = fs.createReadStream('./foo.txt', {
    start: 3,
    end: 6,
    highWaterMark: 2
})
// 读取文件
reader.on("data", (data) => { 
    console.log(data);
    setTimeout(() => { 
        reader.resume();
    },1000)
})
// 监听开启
reader.on('open', (data) => { 
    console.log('文件被打开了');
})
// 监听关闭
reader.on('close', (data) => {
    console.log('文件被关闭了 ' );
})

//传统写入方式
fs.writeFile('./foo.txt', 'hello world foo', (err) => { 
    if (err) { 
        console.log(err);
    }
})

// 写入文件
const writer = fs.createWriteStream('./foo.txt',{flags:'a',start:4})
writer.write('你好啊', (err) => { 
    if (err) { 
        console.log(err);
    }
})
//写入完成 同时关闭流
writer.end('追加到最后')
writer.on('close', (data) => { 
    console.log("文被关闭");
})

pipe 的使用

pipe的使用.js
js
const fs = require('fs');
// 传统写法
// fs.readFile('./pip.txt', (err) => {
//     if (err) {
//         console.log(err);
//     } else {
//         fs.writeFile('./pip.txt', 'Hello world', (err) => {
//             if (err) {
//                 console.log(err);
//             } else {
//                 console.log('写入成功');
//             }
//         })
//     }
// })

// Stream 的写法
const writer = fs.createWriteStream('./pipe/pipewrite.txt');
const reader = fs.createReadStream('./pipe/pipereader.txt');

// 将读取的流 写入新的文件
reader.pipe(writer)
// writer.close()