/*
* 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('再见');
});
node.js学习笔记之使用文件流
最新推荐文章于 2024-01-29 20:37:25 发布