HarmonyOS 鸿蒙Next中读取download文件夹所有文件
HarmonyOS 鸿蒙Next中读取download文件夹所有文件 请问下可以读取公共目录download文件夹的所有文件吗?不用picker的方式,还有其他的哪种方法可以读取?
在 HarmonyOS NEXT(API 12以及后续版本)里,只要你的应用没有申请 ohos.permission.READ_MEDIA 等受限权限,或者设备运行在“普通模式”(非设备所有者/系统应用),系统就不再允许你用文件路径直接把公共目录(/storage/emulated/0/Download 及其子目录)扫出来
更多关于HarmonyOS 鸿蒙Next中读取download文件夹所有文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS中,可以直接读取公共目录Download文件夹中的文件,但需要满足以下条件:
权限配置需在module.json5中添加权限声明:
"requestPermissions": [
{
"name": "ohos.permission.WRITE_MEDIA"
}
]
并通过动态弹窗申请用户授权
路径获取方式通过目录环境能力接口获取公共目录路径:
import { environment } from '@kit.CoreFileKit';
// 获取Download目录路径
let downloadDirUri = environment.getPublicDirectory(environment.DirectoryType.DOWNLOAD);
需确认设备支持SystemCapability.FileManagement.File.Environment.FolderObtain能力(当前仅支持2in1设备)
文件遍历与读取可通过基础文件API遍历目录:
import { fileIo } from '@kit.CoreFileKit';
// 获取目录下的文件列表
let dir = fileIo.opendirSync(downloadDirUri);
let entry = dir.readSync();
while (entry !== undefined) {
console.info("File name:" + entry.name);
entry = dir.readSync();
}
注意事项:
直接使用/storage/media/100/local/files/Docs/Download/物理路径存在兼容性问题,建议通过环境接口获取标准路径
访问子目录时需递归遍历,目前API暂不支持直接访问多级子目录
部分设备需要通过hdc命令授权访问特殊目录
必须确保用户已授权WRITE_MEDIA权限,否则会抛出安全异常
开发文档参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/native-environment-guidelines
https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-file-environment
在HarmonyOS Next中,读取download文件夹文件需使用@ohos.file.fs
和@ohos.file.fileuri
模块。通过getContext(this).filesDir
获取应用沙箱路径,结合path
模块拼接download目录。使用fs.listFile
异步列出文件列表,可获取文件名、大小等属性。注意需申请ohos.permission.READ_USER_STORAGE
权限。操作需在UI主线程外执行。
在HarmonyOS Next中,可以通过FileManager
API访问公共目录(如Download文件夹)。使用ohos.file.fs
模块的listFile
方法可以获取目录下所有文件列表,无需依赖picker。示例代码:
import fs from '@ohos.file.fs';
async function listDownloadFiles() {
const downloadDir = '下载'; // 公共目录路径
try {
let dir = await fs.openDir(downloadDir);
let files = await dir.read();
files.forEach(file => {
console.log(file.name); // 输出文件名
});
dir.close();
} catch (err) {
console.error('读取失败: ' + err);
}
}
注意:需申请ohos.permission.READ_MEDIA
权限,并在module.json5
中配置。此方式直接操作文件系统,适合批量处理场景。