版本

openHarmony 3.2.3 -release

关键代码如下:

初始化:

this.fileAccessHelperAllServer = fileAccess.createFileAccessHelper(context)

刷新存储设备,后面简称刷新:

rootIterator = await this.fileAccessHelperAllServer.getRoots();
while (!isDone) {
  let result = rootIterator.next();
  if (!result.done)
    Logger.info(TAG, "rootInfo:  deviceType = " + result.value.deviceType + ", uri = " + result.value.uri + ", displayName =" + result.value.displayName + ", deviceFlags = " + result.value.deviceFlags + ", isDone =" + result.done);

  isDone = result.done;
  if (!isDone) {
    this.rootInfos.push(rootInfo)
    }
  }
}

获取存储设备下首级文件:

let fileIterator = this.rootInfos[selectIndex].listFile()

现象:

刚开始时,初始化、刷新存储设备均正常,插拔U盘后刷新,获得的结果也正常。

大约5分钟后,获取到的存储设备结果像被锁定一样,再怎么插拔U盘后刷新存储设备都不再变,(情况1:进入应用后插入U盘,刷新,5分钟后,拔出U盘,刷新,U盘仍然在;情况2:进入应用后不插入U盘,刷新,5分钟后,插入U盘,刷新,U盘仍没有获取到)

情况1发生之后再插入U盘,仍然有U盘,这时候使用获取存储设备下首级文件将出现报错

listFile failed, errCode:14300004, errMessage:Get wrong result

通过volumeManager来获取设备均是正常的,插入U盘就能获取到,拔出U盘就获取不到,不会出现这个问题。

可以确定是fileAccess.getRoot()产生的问题。

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐