HarmonyOS鸿蒙Next中Rawfile开发指导
HarmonyOS鸿蒙Next中Rawfile开发指导 开发者可以通过本指导了解如何使用 Native Rawfile 接口操作 Rawfile 目录和文件。功能包括文件列表遍历、文件打开、搜索、读取和关闭 Rawfile。
开发步骤
1. 创建工程
创建完成后,IDE 会在工程生成 cpp
目录,目录有 libentry/index.d.ts
、hello.cpp
、CMakeLists.txt
等文件。
2. 添加依赖
- 打开
src/main/cpp/CMakeLists.txt
,在target_link_libraries
依赖中添加资源的librawfile.z.so
以及日志依赖libhilog_ndk.z.so
。
3. 修改源文件
- 打开
src/main/cpp/hello.cpp
文件,文件Init
会对当前方法进行初始化映射,这里定义对外接口为getFileList
、getRawFileContent
、getRawFileDescriptor
,映射 C++ 接口分别为GetFileList
、GetRawFileContent
、GetRawFileDescriptor
。
EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports)
{
// ...
}
EXTERN_C_END
- 在
hello.cpp
文件中获取 Js 的资源对象,并转为 Native 的资源对象,即可调用资源的 Native 接口,获取 rawfile 列表、rawfile 文件内容以及 rawfile 描述符{fd, offset, length}
三种调用方式示例代码如下:
#include <rawfile/raw_file.h>
#include <rawfile/raw_dir.h>
#include <rawfile/raw_file_manager.h>
static napi_value GetFileList(napi_env env, napi_callback_info info)
{
// 示例代码
}
4. Js 侧调用
- 打开
src\main\ets\pages\index.ets
,导入"libentry.so"
。 - 资源获取包括获取本应用包资源、应用内跨包资源、跨应用包资源。
- 调用 Native 接口
getFileList
即为src/main/cpp/types/libentry/index.d.ts
中声明的接口,传入 js 的资源对象,以及 rawfile 文件夹的相对路径。
import hilog from '@ohos.hilog';
import testNapi from 'libentry.so';
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
private resmgr = getContext().resourceManager; // 获取本应用包的资源对象
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
let rawfilelist = testNapi.getFileList(this.resmgr, "");
console.log("rawfilelist " + rawfilelist);
let rawfileContet = testNapi.getRawFileContent(this.resmgr, "rawfile1.txt");
console.log("rawfileContet " + rawfileContet);
let rawfileDescriptor = testNapi.getRawFileDescriptor(this.resmgr, "rawfile1.txt");
console.log("getRawFileDescriptor " + rawfileDescriptor.fd, rawfileDescriptor.offset, rawfileDescriptor.length);
let ret = testNapi.isRawDir(this.resmgr, "rawfile1.txt");
})
}
}
.width('100%')
.height('100%')
}
}
更多关于HarmonyOS鸿蒙Next中Rawfile开发指导的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于HarmonyOS鸿蒙Next中Rawfile开发指导的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,Rawfile用于存储应用中的原始资源文件,如音频、视频、图片等。开发时,首先在resources/rawfile
目录下放置资源文件。通过ResourceManager
类可以访问这些资源。例如,使用getRawFileEntry
方法获取文件入口,再通过openRawFileDescriptor
读取文件内容。注意,Rawfile不支持动态更新,适合存储静态资源。合理使用Rawfile可以提升应用的资源管理效率。