HarmonyOS 文件创建/写入后,无法立刻读出,需要关闭后重新创建fs对象吗?

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`)
})

代码如上,可以创建文件并写入文件,读出的文件内容为空;取消中间注释后可以读出文件内容,请问是什么原理?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

可能是文件指针的位置问题。通常情况下,文件创建或写入操作会改变文件的指针位置,导致后续的读取操作无法立即访问到数据,关闭写入流后再打开文件进行读取操作,可以确保文件指针位置正确,从而避免读取失败的问题

分享
微博
QQ
微信
回复
1天前
相关问题
网络请求创建,持久化问题
639浏览 • 1回复 待解决
HarmonyOS 如何创建json对象
506浏览 • 1回复 待解决
现在不能直接创建.ts的文件
186浏览 • 1回复 待解决
创建的单例换了页面不生效问题
2226浏览 • 3回复 待解决