return new Promise((resolve,reject) => {
// 创建可读流
var readerStream = fs.createReadStream(file_path);
// 设置编码为 utf8。
if(encoding == null)readerStream.setEncoding('utf8');
else readerStream.setEncoding(encoding);
let data = null;
readerStream.on('data', function(chunk) {
data += chunk;
});
readerStream.on('end',function(){
resolve(data);
});
readerStream.on('error', function(err){
reject(err);
});
});
上面一段代码作为读写文件的基本操作。但值得注意的是 readerStream.setEncoding 编码选择。
查了一下API文档,说明略少,utf-8 和 hex 两种编码类型:
踩坑点
读取一个ppt格式文件时,使用了utf-8编码,结果报出buffer长度超出边界值。这是由于编码过程,ppt文件数据转换成字符串数据类型已超过buffere边界,buffere相当于一个数组。因此注意编码需要使用hex