以下案例基于华为鸿蒙官方文档,展示如何通过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()
使用CREATE
和READ_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()
)
文件管理注意事项
- 权限声明:需在
module.json5
中添加文件访问权限
json
"requestPermissions": [
{
"name": "ohos.permission.FILE_ACCESS_MANAGER"
}
]
- 沙箱限制:应用默认只能访问自身沙箱目录
- 大文件处理:建议使用流式读写(
createStream()
/read()
)避免内存溢出
完整示例项目结构
entry/src/main/
├── ets/
│ ├── pages/
│ │ └── Index.ets # 主页面
├── resources/ # 静态资源
└── module.json5 # 权限配置