let savePath: string = getContext().filesDir;
let filePath = savePath + '/test2.txt';
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let str: string = 'hello, world';
let arrayBuffer = new ArrayBuffer(4096);
fs.write(file.fd, str).then((writeLen: number) => {
console.log(`fs IO test: fd = ${file.fd} write ${str}, size = ${writeLen}`)
// fs.closeSync(file)
// file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
fs.read(file.fd, arrayBuffer, (err, readLen: number) => {
if(err) {
console.log(`fs IO test: read failed`)
} else {
console.log(`fs IO test: fd = ${file.fd} read ${buffer.from(arrayBuffer, 0, readLen).toString()} size = ${readLen}`)
}
fs.closeSync(file)
})
}).catch(() => {
console.log(`fs IO test: write failed`)
})
代码如上,可以创建文件并写入文件,读出的文件内容为空;取消中间注释后可以读出文件内容,请问是什么原理?
可能是文件指针的位置问题。通常情况下,文件创建或写入操作会改变文件的指针位置,导致后续的读取操作无法立即访问到数据,关闭写入流后再打开文件进行读取操作,可以确保文件指针位置正确,从而避免读取失败的问题