应用文件访问(C/C++)
场景介绍
FileIO模块提供了文件基础操作能力。
基本概念
结果集:满足使用场景正确的 URI。
约束限制
- 进行文件操作之前,必须保证传入正确有效的uri或path。
接口说明
接口的详细说明,请参考 API参考
接口名称 | 描述 |
---|---|
FileManagement_ErrCode OH_FileIO_GetFileLocation(char *uri, int uriLength, FileIO_FileLocation *location) | 获取文件存储位置。 |
enum FileIO_FileLocation FileIO_FileLocation | 文件存储位置枚举值。 |
enum enum FileManagement_ErrCode FileManagement_ErrCode | 文件管理模块错误码。 |
开发步骤
在CMake脚本中链接动态库
CMakeLists.txt中添加以下lib。
target_link_libraries(sample PUBLIC libohfileio.so)
添加头文件
#include <filemanagement/fileio/oh_fileio.h>
调用OH_FileIO_GetFileLocation接口获取文件存储位置。示例代码如下所示:
void GetFileLocationExample() {
char *uri = "file://com.example.demo/data/storage/el2/base/files/test.txt";
FileIO_FileLocation location;
FileManagement_ErrCode ret = OH_FileIO_GetFileLocation(uri, strlen(uri), &location);
if (ret == 0) {
if (location == FileIO_FileLocation::LOCAL) {
printf("This file is on local.");
} else if (location == FileIO_FileLocation::CLOUD) {
printf("This file is on cloud.");
} else if (location == FileIO_FileLocation::LOCAL_AND_CLOUD) {
printf("This file is both on local and cloud.");
}
} else {
printf("GetFileLocation failed, error code is %d", ret);
}
}
应用及文件系统空间统计
接口说明
API的详细介绍请参见 ohos.file.statvfs 、 ohos.file.storageStatistics 。
表1 文件系统空间和应用空间统计
模块 | 接口名 | 功能 |
---|---|---|
@ohos.file.storageStatistics | getCurrentBundleStats | 获取当前应用的存储空间大小(单位为Byte)。 |
@ohos.file.statvfs | getFreeSize | 获取指定文件系统的剩余空间大小(单位为Byte)。 |
@ohos.file.statvfs | getTotalSize | 获取指定文件系统的总空间大小(单位为Byte)。 |
表2 应用空间统计
BundleStats属性 | 含义 | 统计路径 |
---|---|---|
appSize | 应用安装文件大小(单位为Byte) | 应用安装文件保存在以下目录: /data/storage/el1/bundle |
cacheSize | 应用缓存文件大小(单位为Byte) | 应用的缓存文件保存在以下目录: /data/storage/el1/base/cache /data/storage/el1/base/haps/entry/cache /data/storage/el2/base/cache /data/storage/el2/base/haps/entry/cache |
dataSize | 应用文件存储大小(除应用安装文件和缓存文件)(单位为Byte) | 应用文件由本地文件、分布式文件以及数据库文件组成。 本地文件保存在以下目录(注意缓存文件目录为以下目录的子目录): /data/storage/el1/base /data/storage/el2/base 分布式文件保存在以下目录: /data/storage/el2/distributedfiles 数据库文件保存在以下目录: /data/storage/el1/database /data/storage/el2/database |
开发示例
- 获取文件系统数据分区剩余空间大小。
import { statfs } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
let context = getContext(this) as common.UIAbilityContext;
let path = context.filesDir;
statfs.getFreeSize(path, (err: BusinessError, number: number) => {
if (err) {
console.error(`Invoke getFreeSize failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info(`Invoke getFreeSize succeeded, size is ${number}`);
}
});
- 获取当前应用的存储空间大小。
import { storageStatistics } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';
storageStatistics.getCurrentBundleStats((err: BusinessError, bundleStats: storageStatistics.BundleStats) => {
if (err) {
console.error(`Invoke getCurrentBundleStats failed, code is ${err.code}, message is ${err.message}`);
} else {
console.info(`Invoke getCurrentBundleStats succeeded, appsize is ${bundleStats.appSize}`);
}
});
鸿蒙全栈开发全新学习指南
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以要有一份实用的鸿蒙(HarmonyOS NEXT)学习路线与学习文档用来跟着学习是非常有必要的。
针对一些列因素,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线,包含了鸿蒙开发必掌握的核心知识要点,内容有(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、WebGL、元服务、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、OpenHarmony驱动开发、系统定制移植等等)鸿蒙(HarmonyOS NEXT)技术知识点。
本路线共分为四个阶段:
第一阶段:鸿蒙初中级开发必备技能
第二阶段:鸿蒙南北双向高工技能基础:gitee.com/MNxiaona/733GH
第三阶段:应用开发中高级就业技术
第四阶段:全网首发-工业级南向设备开发就业技术:gitee.com/MNxiaona/733GH
《鸿蒙 (Harmony OS)开发学习手册》(共计892页)
如何快速入门?
1.基本概念
2.构建第一个ArkTS应用
3.……
开发基础知识:gitee.com/MNxiaona/733GH
1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言
9.……
基于ArkTS 开发
1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列
16.……
鸿蒙开发面试真题(含参考答案):gitee.com/MNxiaona/733GH
鸿蒙入门教学视频:
美团APP实战开发教学:gitee.com/MNxiaona/733GH
写在最后
- 如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:
- 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。
- 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。
- 想要获取更多完整鸿蒙最新学习资源,请移步前往小编:
gitee.com/MNxiaona/733GH