#鸿蒙通关秘籍#如何使用C/C++获取和操作公共目录?

HarmonyOS
2024-12-13 10:55:01
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
银铃笑语SSD

在鸿蒙系统中,可以通过C/C++接口获取用户的公共目录路径,并进行文件操作。确保有SystemCapability.FileManagement.File.Environment.FolderObtain能力,并在权限申请得到用户授权后进行以下操作:

在CMake文件中链接所需库:

bash target_link_libraries(sample PUBLIC libohenvironment.so libhilog_ndk.z.so)

添加必要的头文件:

c #include <filemanagement/environment/oh_environment.h> #include <filemanagement/fileio/oh_fileio.h> #include <hilog/log.h>

通过C接口获取下载目录路径并查看内部文件:

c void ScanUserDownloadDirPathExample() { char *downloadPath = nullptr; FileManagement_ErrCode ret = OH_Environment_GetUserDownloadDir(&downloadPath); if (ret == 0) { OH_LOG_INFO(LOG_APP, "Download Path=%{public}s", downloadPath); } else { OH_LOG_ERROR(LOG_APP, "GetDownloadPath fail, error code is %{public}d", ret); return; }

struct dirent **namelist = {nullptr};
int num = scandir(downloadPath, &namelist, nullptr, nullptr);
if (num < 0) {
    free(downloadPath);
    OH_LOG_ERROR(LOG_APP, "Failed to scan dir");
    return;
}

for (int i = 0; i < num; i++) {
    OH_LOG_INFO(LOG_APP, "%{public}s", namelist[i]->d_name);
}
free(downloadPath);
free(namelist);

}

上述方法展示了如何通过C/C++接口对下载目录进行文件操作。注意在使用malloc动态分配的内存时,使用完毕后需及时free释放。

分享
微博
QQ
微信
回复
2024-12-13 13:16:12
相关问题
C++ 如何获取操作 Arkts 实例
1339浏览 • 1回复 待解决
HarmonyOS C++异步操作
720浏览 • 1回复 待解决
HarmonyOS 如何使用c++获取父进程id
170浏览 • 1回复 待解决
如何修改C++版本?C++支持情况?
1532浏览 • 1回复 待解决
HarmonyOS C++ArkTS交互
477浏览 • 1回复 待解决
如何C++层面获取系统时间?
4852浏览 • 2回复 待解决
如何C/C++ 创建ArkTS的对象
2858浏览 • 1回复 待解决
HarmonyOS ETSc++层通信
492浏览 • 1回复 待解决
HarmonyOS C++ VideoDecoder组件使用
495浏览 • 1回复 待解决
ts给c++传递数组,c++如何解析
2263浏览 • 1回复 待解决