HarmonyOS鸿蒙Next中Rawfile开发指导

HarmonyOS鸿蒙Next中Rawfile开发指导 开发者可以通过本指导了解如何使用 Native Rawfile 接口操作 Rawfile 目录和文件。功能包括文件列表遍历、文件打开、搜索、读取和关闭 Rawfile。

开发步骤

1. 创建工程

创建完成后,IDE 会在工程生成 cpp 目录,目录有 libentry/index.d.tshello.cppCMakeLists.txt 等文件。

2. 添加依赖

  • 打开 src/main/cpp/CMakeLists.txt,在 target_link_libraries 依赖中添加资源的 librawfile.z.so 以及日志依赖 libhilog_ndk.z.so

3. 修改源文件

  • 打开 src/main/cpp/hello.cpp 文件,文件 Init 会对当前方法进行初始化映射,这里定义对外接口为 getFileListgetRawFileContentgetRawFileDescriptor,映射 C++ 接口分别为 GetFileListGetRawFileContentGetRawFileDescriptor
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可以提升应用的资源管理效率。

回到顶部