buffer stream fs的简单应用 服务器部分

const fs = require('fs');
const stream = require('stream');
const net = require('net');
const zlib = require('zlib');
const gzip = zlib.createGzip();
const ugzip = zlib.createGunzip();
var opt = {};
opt.allowHalfOpen = true;
var ser = net.createServer(opt, function(conn) {
    var res = {};
    conn.on('data', function(data) {

        data = data.toString();
        data = JSON.parse(data);
        console.log(data);
        if(data.events == 'write') {
            console.log('writing');
            var w1 = fs.createWriteStream('../../document/' + data.name);
            var datet = Buffer.from(data.data + new Date().toString());
            console.log(datet, ' data');
            w1.write(datet);
            w1.end();
            w1.on('finish', function() {
                console.log('writed')
                    var reader1 = fs.createReadStream('../../document/' + data.name);
                    var writer1 = fs.createWriteStream('../../document/' + data.name + '.gz');
                    reader1.pipe(gzip).pipe(writer1);
                    res.events = 'write';
                    res.result = true;
                    conn.write(JSON.stringify(res));
                    //conn.pipe(conn);
            })
            w1.on('error', function(err) {
                res.events = 'write';
                res.result = false;
                console.log(err);
                conn.write(Buffer.from(JSON.stringify(res)));
            })
        } else if(data.events == 'read'){
            setTimeout(function() {
            var r1 = fs.createReadStream('../../document/' + data.name + '.gz');
            var w2 = fs.createWriteStream('../../document/' + data.name);
            r1.pipe(ugzip).pipe(w2);
            r1.on('error', function() {
                console.log('err');
                res.events = 'read';
                res.result = false;
                conn.write(Buffer.from(JSON.stringify(res)));
            })
            w2.on('finish', function() {
                console.log('w2');
                var read1 = fs.createReadStream('../../document/' + data.name);
                read1.on('data', function(dt) {
                    dt = Buffer.from(dt).toString();
                    res.events = 'read';
                    res.result = true;
                    res.data = dt;
                    conn.write(Buffer.from(JSON.stringify(res)));
                })
            })
            }, 1000)
            
        } 
        
    })
})
ser.listen(10060, function() {
    console.log('port: ', 10060);
})

读取buffer转化buffer 通过stream读取数据写入数据压缩等.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值