FileUri开发
场景介绍
FileUri提供了关于文件URI的基本操作,对外提供了URI与沙箱路径之间互相转换、远端URI判定、获取URI所在目录路径的URI等接口,方便用户将文件URI与沙箱路径相互转换。
基本概念
结果集:满足使用场景正确的路径或者URI。
约束限制
-
转换或者判断URI类型之前必须保证传入的参数正确有效。
-
为保证数据的准确性,在转换或者判断过程中只允许处理一个对象。
接口说明
接口的详细说明,请参考 API参考
接口名称 | 描述 |
---|---|
FileManagement_ErrCode OH_FileUri_GetUriFromPath(const char *path, unsigned int length, char **result) | 通过传入的路径PATH获取到对应的URI。 |
FileManagement_ErrCode OH_FileUri_GetPathFromUri(const char *uri, unsigned int length, char **result) | 通过传入的URI获取到对应的沙箱路径PATH。 |
FileManagement_ErrCode OH_FileUri_GetFullDirectoryUri(const char *uri, unsigned int length, char **result) | 获取所在路径URI,文件获取所在路径URI,如果URI指向目录则获取当前路径URI。 |
bool OH_FileUri_IsValidUri(const char *uri, unsigned int length) | 判断传人的URI的格式是否正确。 |
开发步骤
在CMake脚本中链接动态库
CMakeLists.txt中添加以下lib。
target_link_libraries(sample PUBLIC libohfileuri.so)
添加头文件
#include <filemanagement/file_uri/oh_file_uri.h>
- 调用OH_FileUri_GetUriFromPath接口,在接口中malloc的内存需要在使用完后释放,因此需要free对应的内存。示例代码如下所示:
#include <cstring>
void OH_FileUri_GetUriFromPathExample() {
char *path = "/data/storage/el2/base/files/test.txt";
unsigned int length = strlen(path);
char *uriResult = NULL;
FileManagement_ErrCode ret = OH_FileUri_GetUriFromPath(path, length ,&uriResult);
if (ret == 0 && uriResult !=NULL) {
printf("pathUri=%s", uriResult); // 应用a获取到的URI为:file://com.example.demo/data/storage/el2/base/files/test.txt
}
if (uriResult != NULL) {
free(uriResult);
}
}
- 调用OH_FileUri_GetPathFromUri通过URi转成对应的PATH,在接口中malloc的内存需要在使用完后释放,因此需要free对应的内存。示例代码如下所示:
#include <cstring>
void OH_FileUri_GetPathFromUriExample() {
char *uri = "file://com.example.demo/data/storage/el2/base/files/test.txt";
unsigned int length = strlen(uri);
char *pathResult = NULL;
FileManagement_ErrCode ret = OH_FileUri_GetPathFromUri(uri, length, &pathResult);
if (ret == 0 && pathResult != NULL) {
printf("pathResult=%s", pathResult); // PathResult值为:/data/storage/el2/base/files/test.txt
}
if (pathResult != NULL) {
free(pathResult);
}
}
- 调用OH_FileUri_GetFullDirectoryUri获取URI所在路径的URI,在接口中malloc的内存需要在使用完后释放,因此需要free对应的内存。示例代码如下所示:
#include <cstring>
void OH_FileUri_GetFullDirectoryUriExample() {
char *uri = "file://com.example.demo/data/storage/el2/base/files/test.txt";
unsigned int length = strlen(uri);
char *uriResult = NULL;
FileManagement_ErrCode ret = OH_FileUri_GetFullDirectoryUri(uri, length, &uriResult);
if (ret == 0 && uriResult != NULL) {
printf("pathUri=%s",uriResult);//URI所在路径的URI:file://com.example.demo/data/storage/el2/base/files/
}
if (uriResult != NULL) {
free(uriResult);
}
}
- 可以调用OH_FileUri_IsValidUri接口进行URI格式验证。 示例代码如下所示:
#include <cstring>
void OH_FileUri_IsValidUriExample() {
char *uri = "file://com.example.demo/data/storage/el2/base/files/test.txt";
unsigned int length = strlen(uri);
bool falgs = OH_FileUri_IsValidUri(uri, length);
printf("The URI is valid? falgs=%d", falgs);
}
获取用户目录环境(C/C++)
场景介绍
Environment提供了获取公共文件用户目录路径的能力,以支持三方应用在公共文件用户目录下进行文件访问操作。
约束限制
- 使用此接口,需确认设备具有以下系统能力:SystemCapability.FileManagement.File.Environment.FolderObtain。
- 此接口仅用作公共沙箱目录路径的获取接口,操作对应的公共目录及其子目录需获取通过弹窗授权方式向用户申请授予对应目录的权限,具体参考 访问控制-向用户申请授权
接口说明
接口的详细说明,请参考 API参考
接口名称 | 描述 |
---|---|
FileManagement_ErrCode OH_Environment_GetUserDownloadDir (char **result) | 获取用户Download目录沙箱路径。只支持2in1设备 |
FileManagement_ErrCode OH_Environment_GetUserDesktopDir (char **result) | 获取用户Desktop目录沙箱路径。只支持2in1设备 |
FileManagement_ErrCode OH_Environment_GetUserDocumentDir (char **result) | 获取用户Document目录沙箱路径。只支持2in1设备 |
开发步骤
在CMake脚本中链接动态库
CMakeLists.txt中添加以下lib。
target_link_libraries(sample PUBLIC libohenvironment.so)
添加头文件
#include <filemanagement/environment/oh_environment.h>
#include <filemanagement/fileio/oh_fileio.h>
- 调用OH_Environment_GetUserDownloadDir接口获取用户Download目录沙箱路径,在接口中使用malloc申请的内存需要在使用完后释放因此需要free对应的内存。示例代码如下所示:
void GetUserDownloadDirPathExample() {
char *downloadPath = NULL;
FileManagement_ErrCode ret = OH_Environment_GetUserDownloadDir(&downloadPath);
if (ret == 0) {
printf("Download Path=%s", downloadPath);
free(downloadPath);
} else {
printf("GetDownloadPath failed, error code is %d", ret);
}
}
- 调用OH_Environment_GetUserDesktopDir接口获取用户Desktop目录沙箱路径,在接口中使用malloc申请的内存需要在使用完后释放因此需要free对应的内存。示例代码如下所示:
void GetUserDesktopDirPathExample() {
char *desktopPath = NULL;
FileManagement_ErrCode ret = OH_Environment_GetUserDesktopDir(&desktopPath);
if (ret == 0) {
printf("Desktop Path=%s", desktopPath);
free(desktopPath);
} else {
printf("GetDesktopPath failed, error code is %d", ret);
}
}
- 调用OH_Environment_GetUserDocumentDir接口获取用户Document目录沙箱路径,在接口中使用malloc申请的内存需要在使用完后释放因此需要free对应的内存。示例代码如下所示:
void GetUserDocumentDirPathExample() {
char *documentPath = NULL;
FileManagement_ErrCode ret = OH_Environment_GetUserDocumentDir(&documentPath);
if (ret == 0) {
printf("Document Path=%s", documentPath);
free(documentPath);
} else {
printf("GetDocumentPath failed, error code is %d", ret);
}
}
鸿蒙全栈开发全新学习指南
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以要有一份实用的鸿蒙(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