鸿蒙Next的File Access Framework(文件访问框架,FAF)为应用提供安全可控的用户文件访问能力。本文解析其核心功能、权限配置与实战用法~
一、FAF核心:安全便捷的文件访问桥梁🔗
FAF是鸿蒙提供的用户文件管理框架,基于ExtensionAbility实现,具备三大特性:
- 安全隔离:通过权限控制限制文件访问范围
- 统一接口:标准化文件选择/保存/管理流程
- 跨设备支持:兼容多端文件系统(手机/平板/车机)
二、权限配置:访问用户文件的「钥匙」🔑
1. 声明文件操作权限(module.json5)
json
{
"abilities": [
{
"skills": [
{
"actions": ["ohos.arkui.intent.action.CHOOSE"], // 文件选择
"uris": [{ "scheme": "file", "host": "*", "path": "/storage/*" }]
},
{
"actions": ["ohos.arkui.intent.action.SAVE"], // 文件保存
"uris": [{ "scheme": "file", "host": "*", "path": "/storage/*" }]
}
]
}
]
}
2. 运行时授权机制
- 用户触发文件选择/保存时,系统弹出授权弹窗
- 应用仅能访问用户授权的文件路径,禁止越权操作
三、核心接口与实战示例🚀
1. 文件选择(以图片为例)
typescript
import { fileAccess, wantAgent } from '@ohos.fileAccess';
// 唤起系统文件选择器
const chooseFile = () => {
const intent = {
action: 'ohos.arkui.intent.action.CHOOSE',
type: 'image/*', // 限定选择图片类型
entities: ['image/*']
};
const want = wantAgent.createWant(intent);
this.context.startAbility(want, (result) => {
if (result && want.response.result) {
const fileUri = want.response.result;
// 获取文件信息(如大小/类型)
fileAccess.getFileInfo(fileUri, (err, info) => {
console.log('选中图片:', info.fileName);
});
}
});
};
2. 文件保存(文本文件示例)
typescript
const saveTextFile = () => {
const saveIntent = {
action: 'ohos.arkui.intent.action.SAVE',
type: 'text/plain', // 指定保存类型为纯文本
extra: { fileName: 'note.txt' } // 预设文件名
};
const saveWant = wantAgent.createWant(saveIntent);
this.context.startAbility(saveWant, (result) => {
if (result) {
const saveUri = want.response.result;
// 写入文件内容
fileAccess.saveFile(saveUri, '鸿蒙开发笔记', (err) => {
if (!err) console.log('保存成功');
});
}
});
};
3. 文件管理操作
typescript
// 创建目录
fileAccess.createDir('/storage/emulated/0/app/newFolder', (err) => {
if (!err) console.log('目录创建成功');
});
// 删除文件
fileAccess.deleteFile('/storage/emulated/0/app/temp.log', (err) => {
if (!err) console.log('文件删除成功');
});
四、安全设计:用户数据的「防护墙」🛡️
1. 沙箱外访问限制
- 应用默认只能访问自身沙箱文件(
/data/el2/files/
) - 访问外部存储(如相册/下载目录)需通过FAF统一接口,禁止直接路径操作
2. 权限最小化原则
- 每次文件操作需单独授权(如选择图片后仅能访问该文件)
- 授权仅在本次操作有效,不授予永久访问权限
3. 跨设备安全策略
- 分布式场景下,文件访问需通过设备认证
- 敏感文件(如隐私图片)禁止跨设备传输
总结:3步实现安全文件访问
- 声明权限 :在配置文件中声明
CHOOSE
/SAVE
等操作权限 - 调用接口:通过FAF提供的统一接口发起文件操作
- 合规处理:遵循「用户授权→有限访问→及时释放」流程