【走进鸿蒙002】文件操作案例:创建、写入和读取文件

以下案例基于华为鸿蒙官方文档,展示如何通过ohos.file.fs模块实现文件的基本操作。代码使用TypeScript(ArkUI开发框架),适用于HarmonyOS应用开发。

一、创建并写入文件

typescript 复制代码
import fs from '@ohos.file.fs';
import common from '@ohos.app.ability.common';

// 获取应用沙箱路径
let context = getContext(this) as common.UIAbilityContext;
let sandboxPath = context.filesDir;

// 文件路径
let filePath = sandboxPath + '/test.txt';

try {
  // 创建文件并写入内容
  let file = fs.openSync(filePath, fs.OpenMode.CREATE | fs.OpenMode.READ_WRITE);
  fs.writeSync(file.fd, "Hello HarmonyOS");
  fs.closeSync(file.fd);
  console.log('文件写入成功');
} catch (err) {
  console.error(`操作失败: ${err.code}, ${err.message}`);
}

代码解读:

  • fs.openSync()使用CREATEREAD_WRITE标志创建可读写文件
  • fs.writeSync()同步写入字符串内容
  • 必须调用fs.closeSync()释放文件描述符

二、读取文件内容

typescript 复制代码
import fs from '@ohos.file.fs';

try {
  let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY);
  let stat = fs.statSync(filePath);

  let buffer = new ArrayBuffer(stat.size);
  fs.readSync(file.fd, buffer);
  let textDecoder = new util.TextDecoder();
  let content = textDecoder.decode(buffer);
  console.log('文件内容: ' + content);

  fs.closeSync(file.fd);
} catch (err) {
  console.error(`读取失败: ${err.code}, ${err.message}`);
}

代码解读:

  • fs.statSync()获取文件大小信息
  • ArrayBuffer准备接收数据的缓冲区
  • TextDecoder将二进制数据转为字符串
运行效果展示
plaintext 复制代码
[控制台输出]
文件写入成功
文件内容: Hello HarmonyOS

三、 复制文件

typescript 复制代码
let destPath = sandboxPath + '/test_backup.txt';

try {
  fs.copyFileSync(filePath, destPath);
  console.log('文件复制成功');
} catch (err) {
  console.error(`复制失败: ${err.code}, ${err.message}`);
}

四、删除文件

typescript 复制代码
try {
  fs.unlinkSync(destPath);
  console.log('文件删除成功');
} catch (err) {
  console.error(`删除失败: ${err.code}, ${err.message}`);
}

关键API说明:

  • copyFileSync(): 同步复制文件
  • unlinkSync(): 同步删除文件
  • 所有同步方法均有对应的异步版本(如copyFile()

文件管理注意事项

  1. 权限声明:需在module.json5中添加文件访问权限
json 复制代码
"requestPermissions": [
  {
    "name": "ohos.permission.FILE_ACCESS_MANAGER"
  }
]
  1. 沙箱限制:应用默认只能访问自身沙箱目录
  2. 大文件处理:建议使用流式读写(createStream()/read())避免内存溢出

完整示例项目结构

复制代码
entry/src/main/
  ├── ets/
  │   ├── pages/
  │   │   └── Index.ets  # 主页面
  ├── resources/         # 静态资源
  └── module.json5       # 权限配置
相关推荐
kirk_wang18 小时前
Flutter 三方库鸿蒙适配实践:以 Firebase Messaging 为例实现跨平台推送集成
flutter·移动开发·跨平台·arkts·鸿蒙
kirk_wang1 天前
Flutter SharedPreferences 鸿蒙端适配实践:原理、实现与优化
flutter·移动开发·跨平台·arkts·鸿蒙
kirk_wang1 天前
鸿蒙UI组件与Flutter Widget混合开发:原理、实践与踩坑指南
flutter·移动开发·跨平台·arkts·鸿蒙
汉堡黄•᷄ࡇ•᷅1 天前
鸿蒙开发:案例集合List:ListItem拖拽(交换位置,过渡动画)
harmonyos·鸿蒙·鸿蒙系统
kirk_wang1 天前
当Flutter遇见纯血鸿蒙:SQLite兼容适配的实战与思考
flutter·移动开发·跨平台·arkts·鸿蒙
后端小张1 天前
【鸿蒙2025领航者闯关】鸿蒙OS在工业控制领域的技术突破与实战应用
5g·华为·云计算·harmonyos·鸿蒙·鸿蒙系统·鸿蒙2025领航者闯关
kirk_wang2 天前
Flutter三方库鸿蒙适配深度解析:从架构原理到性能优化实践
flutter·移动开发·跨平台·arkts·鸿蒙
汉堡黄•᷄ࡇ•᷅2 天前
鸿蒙开发: 案例集合List:ListItem侧滑(删除、收藏)
harmonyos·鸿蒙·鸿蒙系统
后端小张2 天前
【鸿蒙2025领航者闯关】鸿蒙生态共建:智慧医疗领域的分布式革新与实践
分布式·华为·harmonyos·鸿蒙·鸿蒙系统·鸿蒙2025领航者闯关·开发者年度总结
kirk_wang2 天前
鸿蒙分布式能力与Flutter集成:Flutter三方库鸿蒙适配实践
flutter·移动开发·跨平台·arkts·鸿蒙