读数据
var rs = fs.createReadStream(filePath , {options});
options是一组key-value值,常用的设置如下:
flags: 对文件进行何种操作,默认为’r’,读文件
encoding:指定编码,默认为null,如果不设置具体的编码格式,读出的数据就是Buffer类型;也可以使用rs.setEncoding(“utf-8”)指定编码格式
start:从start开始读取文件
end:读取文件到end为止(包括end)
highWaterMark:最高水位线,内部缓冲区最多能容纳的字节数,如果超过这个大小,就停止读取资源文件,默认值是64KB
需要触发的函数
data:有数据需要读取时触发
error:发生错我时触发
end:读取完毕时触发
读取实例:
var fs = require('fs');//引入fs模板
var read = fs.createReadStream('t.text');//创建可读流
var data = ''
read.setEncoding('UTF8')//设置成utf-8编码
read.on('data', function(text) {//有数据可以读时触发
data += text;
})
read.on("error", function(err) {//发生错误时触发
console.log(err.stack);
})
read.on('end', function() {//读取数据结束时触发
console.log(data);
})
写入数据(覆盖式)
触发的函数
finish:写入完成
error:发生错误
实例:
var fs = require('fs')
var write = fs.createWriteStream('t.text');
write.write('mm', 'UTF8');
write.on('finish', function() {
console.log("写入完成")
})
write.on('error', function(err) {
console.log(err.stack);
})
write.end();
这种写法是完全覆盖文件里面原来的内容
管道流(从一个文件读数据到另一个文件)
这种适用于复制内容很多的文件
也是全文覆盖
var fs = require('fs');
var read = fs.createReadStream('in.text');
var write = fs.createWriteStream('out.text');
//管道读取
//读取in.text中的内容写入到out.text文件中
read.pipe(write);
链式流
链式流一般用于管道操作,压缩和解压文件
var fs = require('fs');
var zlib = require('zlib');
fs.createReadStream('in.text')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt.gz'));
console.log('文件压缩完成');
fs.createReadStream('input.txt.gz')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('input.txt'));
console.log("解压完成");
写入数据(追加式)
var ws = fs.createWriteStream(filePath, {options});
flags:对文件进行何种操作,默认为“w",代表写文件;如果是"a",代表每次写入的时候,不清空文件中的原有数据,而是直接在原有数据的末尾添加新数据
encoding:指定写入的编码格式,默认为null
start:文件开始写入的位置
highWaterMark:缓存区能够容纳的最大字节数,默认为16KB,如果超过这个值,write方法就会返回false
var fs = require('fs');
var read = fs.createReadStream('in.text');
//设置第二个参数append
var write = fs.createWriteStream('out.text', { 'flags': 'a' });
//管道流读写操作
read.pipe(write);
console.log('执行完毕');