node.js学习笔记之使用文件流

/*
* fs.createReadStream(path,[options])
* 参数:path:要读取的文件的路径
*       options为一个对象,其包括的属性如下:
*               flag 指定对文件采取什么操作,默认为'r'
*               encoding: 用于指定采用什么编码格式来读取文件,默认为null
*               autoClose:指定是否关闭在读取文件时操作系统内部使用的文件描述符
*                           值为false时,即使在读取文件产生错误时也不会关闭文件,开发者必须通过close或者closeSync方法手动关闭
*                           值为true时,读取文件产生错误时自动关闭文件,默认为true
*               start:指定文件的开始读取位置
*               end:指定文件的结束读取位置
* */
/*使用createReadStream方法读取文件*/

var fs = require('fs');
var file = fs.createReadStream('./test.txt');
file.on('data',function (data) {
    console.log('读取到数据:'+data);
});
file.on('open',function (fd) {
    console.log('开始读取文件.')
});
file.on('end',function () {
    console.log('文件已全部读取')
});
file.on('close',function () {
    console.log('文件被关闭');
});
file.on('error',function () {
    console.log('读取文件失败')
})

/*暂停并恢复文件的读取*/
var fs = require('fs');
var file = fs.createReadStream('./test.txt');
//暂停文件的读取
file.pause();
file.on('data',function (data) {
    console.log('读取到数据:'+data);
});
//一秒后回复文件的读取
setTimeout(function () {
    file.resume();
},1000);


/*
* fs.createWriteStream(path,[options])
* 参数:path:要读取的文件的路径
*       options为一个对象,其包括的属性如下:
*               flag 指定对文件采取什么操作,默认为'w'
*               encoding: 用于指定采用什么编码格式来读取文件,默认为null
*        start:指定文件的开始写入位置
*
* write方法:用于将流数据写入到目标对象中(out代表一个WriteStream对象)
*       out.write(chunk,[encoding],[callback])
*        参数:  chunk:指定要写入的数据,可以为Buffer对象或者字符串
*               callback为无参回调函数
*         此方法返回一个布尔类型值,当操作系统缓存区已全部写满,返回false
*                                当操作系统还可以写入数据时,返回true
*  end方法:调用此方法会迫使操作系统将缓存区剩余数据立即被写入文件
*           当没有数据写入流中可调用该方法
*       out.end([chunk],[encoding],[callback])
*       参数:chunk指定追加的数据,其余同上
*  drain事件:当write方法返回false之后触发,表示操作系统缓存区数据已经全部写入文件,可以继续向操作系统缓存区写入数据
*  finish事件:当end方法调用且数据全部被写入操作系统缓存区时触发
*  pipe:当读取数据的对象的pipe方法被调用时触发
*  unpipe:当读取数据的对象的unpipe方法被调用时触发
*  error事件:写入数据产生错误时触发
*  end事件:当调用end方法时触发
* */
/*使用createWriteStream方法写入文件*/
var fs = require('fs');
var file = fs.createReadStream('./test.txt');
var out = fs.createWriteStream('./message.txt');
file.on('data',function (data) {
    out.write(data);
});
out.on('open',function () {
    console.log('需要被写入的文件已打开');
});
file.on('end',function () {
    out.end('再见',function () {
        console.log('文件全部写入完毕');
        console.log('共写入%d字节数据',out.bytesWritten);
    });
});

        /*使用pipe方法复制文件*/
/*
* readStream.pipt(destination,[options])
* 参数:destination必须为一个写入流对象
*       options为一个对象,其中包含一个end属性,
*       end属性为true时:当数据被全部读取完毕,立即将操作系统缓存区剩余数据全部写入文件并关闭文件
*       end属性为false时:并不关闭文件,还可以继续写入新数据
* */
var fs = require('fs');
var file = fs.createReadStream('./test.txt');
var out = fs.createWriteStream('./message.txt');
file.pipe(out,{end:false});
file.on('end',function () {
    out.end('再见');
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值