想通过FileSystemManager.readFileSync去读一个二进制文件,看到文档中反馈如果不传encoding会以arraybuffer返回。但是测试下来如果不传则会返回空。但是如果传了'binary',又返回是字符串类型。请问,readFileSync这个API什么情况下才会返回二进制?测试代码如下:
const ab = new ArrayBuffer(1024)
ab[0] = 0x1;
var fs = wx.getFileSystemManager();
var filePath = `${wx.env.USER_DATA_PATH}/hello.bin`
const fd = fs.openSync({
filePath: filePath,
flag: 'w'
})
const wres = fs.writeSync({
fd: fd,
data: ab,
encoding: 'binary'
})
console.log("readFileSync success Begin")
var readResult = fs.readFileSync(filePath)
console.log(Object.prototype.toString.call(readResult));
console.log(JSON.stringify(readResult));
console.log("readFileSync success end")
fs.readFile({
filePath : filePath,
encoding : 'binary',
complete : (res) => {
console.log(Object.prototype.toString.call(res.data));
console.log(JSON.stringify(res));
console.log("readFile complete end")
}
})
如上图,第一个函数没有传encoding类型,直接返回空,也确实是ArrayBuffer类型。第二个函数传了,但是直接返回字符串。