尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
《解压Zip文件》三、文件管理指南
HarmonyOS ohos.file.fs (文件管理) 使用指南沙箱文件操作全解模块类型系统内置模块关键词文件管理、fs、沙箱目录、文件读写、目录操作、ArkTS效果一、模块概述ohos.file.fs是 HarmonyOS 的文件管理模块提供了一套完整的文件与目录操作 API。应用默认运行在沙箱环境中只能访问自身沙箱目录下的文件无需额外申请存储权限。沙箱目录结构/data/storage/el2/base/ ├── cache/ ← context.cacheDir 缓存目录可清理 ├── files/ ← context.filesDir 文件目录持久存储 ├── preferences/ ← context.preferencesDir 偏好设置 └── temp/ ← context.tempDir 临时目录目录属性路径获取方式用途cacheDircontext.cacheDir缓存数据系统可能在存储不足时自动清理filesDircontext.filesDir持久文件不会被系统自动清理tempDircontext.tempDir临时文件适合中间产物二、核心 API 分类2.1 导入模块importfsfromohos.file.fs;import{BusinessError}fromohos.base;2.2 文件打开模式 (OpenMode)枚举值说明OpenMode.READ_ONLY只读模式OpenMode.WRITE_ONLY只写模式OpenMode.READ_WRITE读写模式OpenMode.CREATE文件不存在时自动创建OpenMode.TRUNC打开时清空文件内容OpenMode.APPEND追加写入模式三、目录操作3.1 创建目录 —— mkdirSync// 同步创建目录try{fs.mkdirSync(${context.cacheDir}/myFolder);hilog.info(0x0001,TAG,目录创建成功);}catch(err){constbizErrerrasBusinessError;if(bizErr.code13900002){hilog.info(0x0001,TAG,目录已存在);}else{hilog.error(0x0001,TAG,创建失败:${bizErr.message});}}3.2 删除目录 —— rmdirSynctry{fs.rmdirSync(${context.cacheDir}/myFolder);}catch(err){hilog.error(0x0001,TAG,删除目录失败:${(errasBusinessError).message});}注意rmdirSync只能删除空目录。若要删除非空目录需先递归删除内部文件。3.3 读取目录内容 —— listFileSynctry{constfiles:string[]fs.listFileSync(${context.cacheDir}/myFolder);for(constfileNameoffiles){hilog.info(0x0001,TAG,文件:${fileName});}}catch(err){hilog.error(0x0001,TAG,列举文件失败:${(errasBusinessError).message});}四、文件操作4.1 创建并写入文件functioncreateAndWriteFile(filePath:string,content:string):void{letfile:fs.File|nullnull;try{// 以读写 创建模式打开文件filefs.openSync(filePath,fs.OpenMode.READ_WRITE|fs.OpenMode.CREATE);// 写入字符串内容constwriteLenfs.writeSync(file.fd,content);hilog.info(0x0001,TAG,写入成功字节数:${writeLen});}catch(err){hilog.error(0x0001,TAG,写入失败:${(errasBusinessError).message});}finally{// 务必关闭文件if(file!null){fs.closeSync(file);}}}4.2 读取文件内容functionreadFileContent(filePath:string):string{letfile:fs.File|nullnull;letcontent:string;try{filefs.openSync(filePath,fs.OpenMode.READ_ONLY);// 获取文件信息conststatfs.statSync(filePath);constbufnewArrayBuffer(stat.size);// 读取文件内容fs.readSync(file.fd,buf);contentString.fromCharCode(...newUint8Array(buf));hilog.info(0x0001,TAG,读取成功大小:${stat.size});}catch(err){hilog.error(0x0001,TAG,读取失败:${(errasBusinessError).message});}finally{if(file!null){fs.closeSync(file);}}returncontent;}4.3 追加写入文件functionappendToFile(filePath:string,content:string):void{letfile:fs.File|nullnull;try{filefs.openSync(filePath,fs.OpenMode.READ_WRITE|fs.OpenMode.APPEND);fs.writeSync(file.fd,content);}catch(err){hilog.error(0x0001,TAG,追加失败:${(errasBusinessError).message});}finally{if(file!null){fs.closeSync(file);}}}4.4 删除文件try{fs.unlinkSync(${context.cacheDir}/myFolder/old_file.txt);hilog.info(0x0001,TAG,文件删除成功);}catch(err){hilog.error(0x0001,TAG,删除失败:${(errasBusinessError).message});}4.5 获取文件信息 —— statSynctry{conststat:fs.Statfs.statSync(filePath);hilog.info(0x0001,TAG,文件大小:${stat.size}字节);hilog.info(0x0001,TAG,最后修改时间:${newDate(stat.mtime).toISOString()});hilog.info(0x0001,TAG,是否为目录:${stat.isDirectory()});hilog.info(0x0001,TAG,是否为文件:${stat.isFile()});}catch(err){hilog.error(0x0001,TAG,获取信息失败:${(errasBusinessError).message});}4.6 复制文件 —— copyFileSynctry{fs.copyFileSync(${context.cacheDir}/source.txt,${context.cacheDir}/backup.txt);hilog.info(0x0001,TAG,文件复制成功);}catch(err){hilog.error(0x0001,TAG,复制失败:${(errasBusinessError).message});}4.7 重命名/移动文件 —— renameSynctry{fs.renameSync(${context.cacheDir}/old_name.txt,${context.cacheDir}/new_name.txt);hilog.info(0x0001,TAG,重命名成功);}catch(err){hilog.error(0x0001,TAG,重命名失败:${(errasBusinessError).message});}五、完整示例文件管理工具类以下封装了一个实用的文件管理工具类涵盖常用操作importfsfromohos.file.fs;import{BusinessError}fromohos.base;import{hilog}fromkit.PerformanceAnalysisKit;constTAGFileHelper;exportclassFileHelper{/** 确保目录存在递归创建 */staticensureDir(dirPath:string):void{try{fs.accessSync(dirPath);}catch(_e){try{fs.mkdirSync(dirPath);}catch(err){hilog.warn(0x0001,TAG,创建目录失败:${(errasBusinessError).message});}}}/** 写入文本文件 */staticwriteTextFile(filePath:string,content:string):boolean{letfile:fs.File|nullnull;try{filefs.openSync(filePath,fs.OpenMode.WRITE_ONLY|fs.OpenMode.CREATE|fs.OpenMode.TRUNC);fs.writeSync(file.fd,content);returntrue;}catch(err){hilog.error(0x0001,TAG,写入失败:${(errasBusinessError).message});returnfalse;}finally{if(file!null){fs.closeSync(file);}}}/** 读取文本文件 */staticreadTextFile(filePath:string):string{letfile:fs.File|nullnull;try{filefs.openSync(filePath,fs.OpenMode.READ_ONLY);conststatfs.statSync(filePath);constbufnewArrayBuffer(stat.size);fs.readSync(file.fd,buf);returnnewTextDecoder().decode(newUint8Array(buf));}catch(err){hilog.error(0x0001,TAG,读取失败:${(errasBusinessError).message});return;}finally{if(file!null){fs.closeSync(file);}}}/** 安全删除文件 */staticdeleteFile(filePath:string):boolean{try{fs.unlinkSync(filePath);returntrue;}catch(err){hilog.error(0x0001,TAG,删除失败:${(errasBusinessError).message});returnfalse;}}/** 检查文件是否存在 */staticexists(filePath:string):boolean{try{fs.accessSync(filePath);returntrue;}catch(_e){returnfalse;}}/** 获取目录下所有文件名 */staticlistFiles(dirPath:string):string[]{try{returnfs.listFileSync(dirPath);}catch(err){hilog.error(0x0001,TAG,列举失败:${(errasBusinessError).message});return[];}}/** 清空目录内所有文件 */staticclearDirectory(dirPath:string):void{try{constfilesfs.listFileSync(dirPath);for(constfileNameoffiles){constfullPath${dirPath}/${fileName};conststatfs.statSync(fullPath);if(stat.isFile()){fs.unlinkSync(fullPath);}}}catch(err){hilog.error(0x0001,TAG,清空失败:${(errasBusinessError).message});}}}六、异步操作示例对于 UI 敏感场景推荐使用异步 API 避免阻塞主线程asyncfunctionasyncFileDemo(context:Context):Promisevoid{constfilePath${context.cacheDir}/async_demo.txt;// 异步写入letfile:fs.File|nullnull;try{filefs.open(filePath,fs.OpenMode.READ_WRITE|fs.OpenMode.CREATE);awaitfs.write(file.fd,Hello async world!);hilog.info(0x0001,TAG,异步写入完成);}finally{if(file!null){awaitfs.close(file);}}// 异步读取filenull;try{filefs.open(filePath,fs.OpenMode.READ_ONLY);conststatawaitfs.stat(filePath);constbufnewArrayBuffer(stat.size);awaitfs.read(file.fd,buf);hilog.info(0x0001,TAG,异步读取:${newTextDecoder().decode(newUint8Array(buf))});}finally{if(file!null){awaitfs.close(file);}}}七、注意事项7.1 文件描述符管理每次打开文件后必须关闭否则会导致文件句柄泄露// ✅ 推荐finally 块中关闭letfile:fs.File|nullnull;try{filefs.openSync(path,fs.OpenMode.READ_ONLY);// 操作...}finally{if(file!null){fs.closeSync(file);}}7.2 路径拼接使用模板字符串拼接路径避免硬编码分隔符// ✅ 推荐constfilePath${context.cacheDir}/subdir/file.txt;// ❌ 避免constfilePathcontext.cacheDir/subdir/file.txt;7.3 权限边界沙箱内操作无需权限访问用户文件如相册、下载需要ohos.permission.READ_MEDIA等权限跨应用共享文件使用ohos.file.share或 URI 授权八、API 速查表操作同步方法异步方法打开文件openSyncopen关闭文件closeSyncclose读取文件readSyncread写入文件writeSyncwrite创建目录mkdirSyncmkdir删除目录rmdirSyncrmdir列举文件listFileSynclistFile删除文件unlinkSyncunlink文件信息statSyncstat复制文件copyFileSynccopyFile重命名renameSyncrename检查存在accessSyncaccess
RELATED

相关推荐

mootdx如何实现行情服务器智能选择与性能优化?

mootdx如何实现行情服务器智能选择与性能优化?

mootdx如何实现行情服务器智能选择与性能优化? 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx mootdx作为通达信数据读取的高效封装工具,其核心功能之一是智能服务器选择机…

📅 2026/9/11 11:35:44
HarmonyOS开发实战:小分享-深浅色主题切换——基于 resources/dark 适配

HarmonyOS开发实战:小分享-深浅色主题切换——基于 resources/dark 适配

前言 深浅色主题 是现代移动应用的标配功能,让应用在浅色和深色模式下都有良好的视觉体验。HarmonyOS 通过 resources/dark/ 目录实现主题化资源适配。小分享 App 的 EntryAbility 中设置了 COLOR_MODE_NOT_SET 跟随系统。本篇讲解完整的深浅色适配方案。详细 API …

📅 2026/9/11 5:08:11
限时开放|2024全球Top 50高校默认启用的学术润色Prompt库(含医学/工科/人文专属指令集,仅剩137份授权码)

限时开放|2024全球Top 50高校默认启用的学术润色Prompt库(含医学/工科/人文专属指令集,仅剩137份授权码)

更多请点击: https://codechina.net 第一章:限时开放|2024全球Top 50高校默认启用的学术润色Prompt库(含医学/工科/人文专属指令集,仅剩137份授权码) 全球顶尖研究型高校正悄然重构AI辅助学术写作范式。剑…

📅 2026/9/10 22:11:21
MORE NEWS

更多资讯

📰

20 行代码构建向量索引:CocoIndex 数据索引实战指南

20 行代码构建向量索引:CocoIndex 数据索引实战指南 【免费下载链接】cocoindex Incremental engine for long horizon agents 🌟 Star if you like it! 项目地址: https://gitcode.com/GitHub_Trending/co/cocoindex CocoIndex 是一个开源的数据…

📰

gstack /benchmark-models 指南:如何同题对比 Claude、GPT、Gemini 的延迟、成本与质量

gstack /benchmark-models 指南:如何同题对比 Claude、GPT、Gemini 的延迟、成本与质量 【免费下载链接】gstack Use Garry Tans exact Claude Code setup: 23 opinionated tools that serve as CEO, Designer, Eng Manager, Release Manager, Doc Engineer, and QA…

📰

家政派单系统PHP源码解析与策略模式重构

简介:本资源是一套基于PHP开发的家政服务行业实战项目源码,面向Web开发初学者与中级PHP工程师,聚焦订单调度、用户服务与派单逻辑等典型业务场景,助力掌握Web系统从需求到落地的完整开发流程。压缩包共5081个文件,主体…

📰

深度相机与YOLO V5融合:实时目标检测与测距实战(一)

做机器人的朋友应该都有过这种经历:视觉模块只给你输出一个2D的检测框,告诉你“这里有个目标”,但你伸过去抓的时候,发现高度、远近全靠猜。YOLO这类目标检测算法擅长回答“是什么、在哪一片像素上”,它不回答“距离多…

📰

在 cuda-samples 中用 libNVRTC 实现设备端断言调试:simpleAssert_nvrtc 运行时编译实战解析

在 cuda-samples 中用 libNVRTC 实现设备端断言调试:simpleAssert_nvrtc 运行时编译实战解析 【免费下载链接】cuda-samples Samples for CUDA Developers which demonstrates features in CUDA Toolkit 项目地址: https://gitcode.com/GitHub_Trending/cu/cuda-s…

📰

Unity 交互视频开发实战:从热区触发到分支叙事与多平台部署

做交互视频这事,我前后折腾过两个完整项目,一个是品牌方的产品互动广告,一个是带有分支剧情的小型互动短剧。刚开始我也以为这就是“视频播放器 盖几个按钮”的活儿,真正动手才明白,它是在视频工程、UI事件系统、状态…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬