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
2024-12-25 15:10:18
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

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

分享
微博
QQ
微信
回复
2024-12-25 18:14:14
相关问题
HarmonyOS 创建子窗口相关问题
57浏览 • 1回复 待解决
网络请求创建,持久化问题
951浏览 • 1回复 待解决
HarmonyOS 如何创建json对象
803浏览 • 1回复 待解决