HarmonyOS 多级目录写入失败的问题

2024-08-29  本文已影响0人  流云_henry

HarmonyOS的fs.openSync不支持创建目录,所以在进行打开文件的时候,需要先创建目录才可以:

  /*
  **写入文本至文件中
  * path: 文件路径
  * contentName: 文件名
  * content: 文本内容
  */
  writeContent(path:string, content:string | ArrayBuffer, contentName: string){
    //存储前先删除指定路径下的文件
    this.deleteFile(path, contentName)
    //以读写和创建的模式打开或创建一个新文件
    let savePath = this.cacheDic + '/' + path + '/'
    try {
      //创建目录
      if (fs.accessSync(savePath, fs.AccessModeType.READ_WRITE) == false) {
        fs.mkdirSync(savePath, true)
      }
      
      let file = fs.openSync(savePath + contentName, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
      //将content写入到打开的文件中
      const result = fs.writeSync(file.fd, content)
      //关闭文件
      fs.closeSync(file)
    } catch (error) {
      console.log(error)
    }
  }

  /*
   * 删除指定目录下的文件
   * path: 文件路径 推荐路径名由:用户ID/书本ID/模块ID/目录ID+...各级子ID
   * */
  deleteFile(path:string, contentName: string){
    let delPath = this.cacheDic + '/' + path + '/' + contentName
    if(fs.accessSync(delPath)){
      //如果存在,则使用fs.unlink函数删除该文件
      try {
        fs.unlinkSync(delPath)
      } catch (error) {
        console.log(error)
      }
    }
  }


  /*
   * 获取文本
   * path: 文件路径 推荐路径名由:用户ID/书本ID/模块ID/目录ID+...各级子ID
   * */
  getContent(path:string, contentName: string): string | undefined {
    let content: string|undefined = undefined
    let savePath = this.cacheDic + '/' + path + '/' + contentName
    if(fs.accessSync(savePath)){
      //如果存在,则读取文件
      try {
        content = fs.readTextSync(savePath)
      } catch (error) {
        console.log(error)
      }
    }
    return content
  }
上一篇 下一篇

猜你喜欢

热点阅读