HarmonyOS鸿蒙Next中怎么获取沙箱内指定类型的文件

HarmonyOS鸿蒙Next中怎么获取沙箱内指定类型的文件 请问怎么获取自己应用沙箱内指定目录的所有指定类型的文件

6 回复

可以看下这个DEMO,支持读取指定目录的指定类型文件,修改下文件后缀即可[https://developer.huawei.com/consumer/cn/doc/architecture-guides/music_player-0000002296726005]

更多关于HarmonyOS鸿蒙Next中怎么获取沙箱内指定类型的文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


技术支持还瞎回复,人家都问了自己的应用沙箱目录,你这个是用的picker。

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

我也看到你另一个帖子了,应用沙箱目录你用的写死的字符串,其实可以通过api获取到应用沙箱目录的:应用上下文Context

在HarmonyOS Next中获取沙箱内指定类型文件,需使用@ohos.file.fs@ohos.file.fileAccess模块。通过fileAccess.getFileAccessAbility()获取沙箱访问能力,使用fs.listFile()遍历目录,结合filter参数按扩展名过滤(如.jpg)。示例代码:

import fileAccess from '@ohos.file.fileAccess';
import fs from '@ohos.file.fs';

let fileAccessAbility = fileAccess.getFileAccessAbility();
let rootDir = "沙箱路径"; // 如internal://app
let filter = { suffix: ['.jpg', '.png'] };  
let files = fs.listFile(rootDir, filter);

需在module.json5中配置fileAccessstorage权限。

在HarmonyOS Next中获取沙箱内指定类型文件的方法如下:

  1. 使用FileManager API访问应用沙箱目录:
import fileio from '@ohos.fileio';
import file from '@ohos.file.fileManager';

// 获取应用沙箱目录路径
let context = getContext(this);
let filesDir = context.filesDir;
  1. 遍历目录获取指定类型文件:
async function getFilesByType(dirPath: string, fileType: string) {
  let fileList = [];
  let dir = await fileio.opendir(dirPath);
  let entry = await dir.read();
  
  while (entry) {
    if (entry.isFile() && entry.name.endsWith(fileType)) {
      fileList.push(entry.name);
    }
    entry = await dir.read();
  }
  
  await dir.close();
  return fileList;
}

// 使用示例:获取沙箱files目录下所有.jpg文件
let jpgFiles = await getFilesByType(filesDir, '.jpg');
  1. 如果需要访问特定子目录:
let subDirPath = filesDir + '/images';
let pngFiles = await getFilesByType(subDirPath, '.png');

注意事项:

  • 只能访问应用自身的沙箱目录
  • 文件类型参数需包含点号(如".txt")
  • 需要声明文件访问权限:
// module.json5
"requestPermissions": [
  {
    "name": "ohos.permission.FILE_ACCESS"
  }
]
回到顶部