《第9讲:调用鸿蒙文件系统:读写本地文件(@ohos.file.fs)》
本文介绍了如何在Flutter应用中调用鸿蒙文件系统(@ohos.file.fs)实现本地文件读写功能。针对Flutter Web无法直接访问设备文件系统的问题,通过ArkTS桥接鸿蒙API实现解决方案。文章详细说明了权限申请配置、ArkTS实现文件读写操作的具体代码,以及如何将功能注册到WebView供Flutter调用。同时指出该方案仅能访问应用私有目录的安全限制,并预告了后续网络请求桥接的内
·
第9篇:调用鸿蒙文件系统:读写本地文件(@ohos.file.fs)
# Flutter × 鸿蒙实战30讲(9):调用鸿蒙文件系统:读写本地文件(@ohos.file.fs)
> 作者:烟云任平生
> 发布时间:2025年12月9日
> 标签:`#Flutter` `#OpenHarmony` `#文件系统` `#@ohos.file.fs` `#CSDN`
---
### 一、场景需求
Flutter Web 无法直接访问设备文件系统。
但业务常需:**保存用户配置、导出日志、读取本地文档**。
解决方案:通过 **ArkTS 桥接 @ohos.file.fs API**。
---
### 二、权限申请
在 `module.json5` 中添加:
```json
{
"requestPermissions": [
{ "name": "ohos.permission.READ_MEDIA" },
{ "name": "ohos.permission.WRITE_MEDIA" }
]
}
💡 OpenHarmony 标准系统中,应用沙箱目录为 /data/storage/el2/base/...
三、ArkTS 实现文件读写
// fileBridge.ts
import fs from '@ohos.file.fs';
export class FileBridge {
// 写入文件
static writeFile(filename: string, content: string): boolean {
try {
const path = getContext().filesDir + '/' + filename;
fs.writeTextFileSync(path, content);
return true;
} catch (e) {
console.error('Write failed:', e);
return false;
}
}
// 读取文件
static readFile(filename: string): string {
try {
const path = getContext().filesDir + '/' + filename;
return fs.readTextFileSync(path);
} catch (e) {
console.error('Read failed:', e);
return '';
}
}
}
📌 getContext().filesDir 返回应用私有目录,无需额外权限。
四、注册到 WebView
在 MainPage.ets 中:
aboutToAppear() {
this.controller.registerJavaScriptProxy({
object: {
saveConfig: (jsonStr: string) => {
return FileBridge.writeFile('config.json', jsonStr);
},
loadConfig: () => {
return FileBridge.readFile('config.json');
}
},
name: "FileAPI",
interface: ["saveConfig", "loadConfig"]
});
}
五、Flutter 侧调用
// 保存配置
void saveConfig(Map<String, dynamic> config) {
final js = html.window['FileAPI'];
if (js != null) {
final jsonStr = jsonEncode(config);
js.callMethod('saveConfig', [jsonStr]);
}
}
// 读取配置
Future<Map<String, dynamic>> loadConfig() async {
final js = html.window['FileAPI'];
if (js != null) {
final str = await js.callMethod('loadConfig');
if (str is String && str.isNotEmpty) {
return jsonDecode(str);
}
}
return {};
}
六、安全与限制
只能访问 应用私有目录,无法读取其他应用或系统文件
不支持直接操作 SD 卡(需 ohos.permission.MANAGE_EXTERNAL_STORAGE,标准系统慎用)
🔜 下一篇预告:《第10讲:网络请求桥接:从 Flutter 发起 HTTP 请求》
💬 你希望下一步打通哪个系统能力?评论区告诉我!
更多推荐



所有评论(0)