文件访问接口模块架构
1. 模块概述
文件访问接口提供基础文件IO操作能力,其具体包括用于管理文件的基本文件接口,管理目录的基本目录接口,获取文件信息的统计接口,流式读写文件的流式接口,以及文件锁接口。
源码:https://gitee.com/openharmony/filemanagement_file_api
1.1 功能与目标
主要功能:
文件访问接口模块(File API)是OpenHarmony系统中提供基础文件IO操作能力的核心模块,为应用程序提供统一的文件访问接口。该模块的主要功能包括:
- 基本文件操作:提供文件的创建、打开、读取、写入、删除、移动、重命名等基础操作
- 目录管理:支持目录的创建、删除、遍历等操作
- 文件信息获取:提供文件统计信息获取,包括文件大小、访问权限、修改时间等
- 流式读写:支持流式文件读写操作,提供高性能的文件IO能力
- 文件锁机制:提供文件阻塞式和非阻塞式锁定功能
- 文件过滤:支持按文件名、后缀、MIME类型等条件过滤文件
- 哈希计算:提供文件MD5、SHA1、SHA256等哈希值计算
- 安全标签:支持文件安全标签的设置和获取
- 环境管理:提供用户目录环境的管理功能
- 异步IO优化:通过HyperAio提供高性能异步IO能力
使用场景:
- 应用程序的文件读写操作
- 文件管理器的文件操作
- 媒体文件的处理和管理
- 数据备份和恢复
- 文件同步和传输
- 第三方应用的文件访问需求
1.2 系统位置
系统架构位置:
文件访问接口模块位于OpenHarmony系统的foundation/filemanagement
子系统下,是文件管理框架的基础组件。
模块关系:
- 上层对接:为应用层提供JS、Native、C等多种语言的文件访问API
- 下层对接:对接底层文件系统,通过系统调用实现文件操作
- 横向协作:与user_file_service、app_file_service、storage_service等模块协作
- 系统集成:集成到NAPI框架中,提供跨语言的文件访问能力
核心模块地位:
该模块是文件管理子系统的基础模块,为整个文件管理框架提供底层的文件操作能力,是构建文件管理应用的重要基础设施。
1.3 设计思路与模式
设计思路:
- 统一接口设计:通过LibN抽象层提供统一的NAPI接口,屏蔽平台差异
- 多语言支持:提供JS、Native、C等多种语言接口,满足不同开发需求
- 异步处理机制:支持同步和异步两种编程模型,提高系统响应性能
- 高性能优化:通过HyperAio和io_uring技术提供高性能异步IO能力
- 安全控制:集成文件安全标签机制,确保文件访问安全
- 模块化架构:按功能划分为多个子模块,便于维护和扩展
设计模式:
- 适配器模式:LibN作为适配器层,统一不同平台的API差异
- 工厂模式:通过NExporter工厂创建不同类型的导出器
- 策略模式:支持不同的IO策略(同步/异步、阻塞/非阻塞)
- 观察者模式:文件变化监听机制
- 单例模式:部分核心组件采用单例模式确保全局唯一性
1.4 系统框图
系统服务 底层系统 接口层 文件访问接口模块 应用层 NAPI框架 权限管理 进程管理 内存管理 文件系统 系统调用 io_uring 权限管理 JS API Native API C API CJ API LibN抽象层 FS模块 FileIO模块 Hash模块 SecurityLabel模块 Environment模块 HyperAio模块 JS应用 Native应用 C应用 第三方应用
2. 模块结构
2.1 源文件与头文件
核心模块文件:
FS模块(文件系统操作):
interfaces/kits/js/src/mod_fs/class_file/file_n_exporter.h
- File类导出器interfaces/kits/js/src/mod_fs/class_stream/stream_n_exporter.h
- Stream类导出器interfaces/kits/js/src/mod_fs/class_stat/stat_n_exporter.h
- Stat类导出器interfaces/kits/js/src/mod_fs/class_watcher/watcher_n_exporter.h
- Watcher类导出器interfaces/kits/js/src/mod_fs/properties/open.h
- 文件打开操作interfaces/kits/js/src/mod_fs/properties/stat.h
- 文件信息获取interfaces/kits/js/src/mod_fs/properties/copy.h
- 文件复制操作interfaces/kits/js/src/mod_fs/properties/move.h
- 文件移动操作
FileIO模块(文件IO操作):
interfaces/kits/js/src/mod_fileio/
- 文件IO相关实现interfaces/kits/native/fileio/fileio_native.h
- Native文件IO接口interfaces/kits/c/fileio/fileio.h
- C语言文件IO接口
Hash模块(哈希计算):
interfaces/kits/js/src/mod_hash/hash.h
- 哈希计算接口interfaces/kits/js/src/mod_hash/class_hashstream/hashstream_n_exporter.h
- 哈希流导出器
SecurityLabel模块(安全标签):
interfaces/kits/js/src/mod_securitylabel/security_label.h
- 安全标签接口
Environment模块(环境管理):
interfaces/kits/js/src/mod_environment/environment_core.h
- 环境管理核心interfaces/kits/c/environment/environment.h
- C语言环境接口
HyperAio模块(高性能异步IO):
interfaces/kits/hyperaio/include/hyperaio.h
- 高性能异步IO接口
工具和基础库:
utils/filemgmt_libn/include/filemgmt_libn.h
- LibN基础库utils/filemgmt_libhilog/include/filemgmt_libhilog.h
- 日志库utils/filemgmt_libfs/include/filemgmt_libfs.h
- 文件系统库
2.2 类、结构体、函数与方法
核心类定义:
FileNExporter类
cpp
class FileNExporter final : public NExporter {
public:
inline static const std::string className_ = "File";
// 导出器管理
bool Export() override;
std::string GetClassName() override;
// 文件属性获取
static napi_value GetPath(napi_env env, napi_callback_info info);
static napi_value GetName(napi_env env, napi_callback_info info);
static napi_value GetParent(napi_env env, napi_callback_info info);
static napi_value GetFD(napi_env env, napi_callback_info info);
// 文件锁操作
static napi_value Lock(napi_env env, napi_callback_info info);
static napi_value TryLock(napi_env env, napi_callback_info info);
static napi_value UnLock(napi_env env, napi_callback_info info);
// 构造函数
static napi_value Constructor(napi_env env, napi_callback_info info);
};
StreamNExporter类
cpp
class StreamNExporter final : public NExporter {
public:
static std::mutex mutex;
inline static const std::string className_ = "FsStream";
// 导出器管理
bool Export() override;
std::string GetClassName() override;
// 同步操作
static napi_value WriteSync(napi_env env, napi_callback_info cbInfo);
static napi_value ReadSync(napi_env env, napi_callback_info cbInfo);
static napi_value CloseSync(napi_env env, napi_callback_info cbInfo);
static napi_value FlushSync(napi_env env, napi_callback_info cbInfo);
// 异步操作
static napi_value Write(napi_env env, napi_callback_info cbInfo);
static napi_value Read(napi_env env, napi_callback_info cbInfo);
static napi_value Close(napi_env env, napi_callback_info cbInfo);
static napi_value Seek(napi_env env, napi_callback_info cbInfo);
static napi_value Flush(napi_env env, napi_callback_info cbInfo);
// 工具方法
static std::shared_ptr<FILE> GetFilePtr(StreamEntity *streamEntity);
static StreamEntity *GetEntityOf(napi_env env, NFuncArg &funcArg);
};
HyperAio类
cpp
class HyperAio {
public:
using ProcessIoResultCallBack = std::function<void(std::unique_ptr<IoResponse>)>;
// 上下文管理
uint32_t SupportIouring();
int32_t CtxInit(ProcessIoResultCallBack *callBack);
int32_t DestroyCtx();
// 异步操作
int32_t StartReadReqs(ReadReqs *req);
int32_t StartOpenReqs(OpenReqs *req);
int32_t StartCancelReqs(CancelReqs *req);
private:
DECLARE_PIMPL(HyperAio);
ProcessIoResultCallBack ioResultCallBack_ = nullptr;
std::thread harvestThread_;
std::atomic<bool> stopThread_ = true;
std::atomic<bool> initialized_ = false;
// 内部方法
void HarvestRes();
void HandleRequestError(std::vector<uint64_t> &errorVec, int32_t errorcode);
void HandleSqeError(uint32_t count, std::vector<uint64_t> &infoVec);
int32_t CheckParameter(uint32_t reqNum);
};
重要结构体:
ReadInfo结构体
cpp
struct ReadInfo {
int32_t fd; // 文件描述符
uint32_t len; // 读取长度
uint64_t offset; // 偏移量
void *buf; // 缓冲区
uint64_t userData; // 用户数据
};
OpenInfo结构体
cpp
struct OpenInfo {
int32_t dfd; // 目录文件描述符
int32_t flags; // 打开标志
uint32_t mode; // 文件模式
void *path; // 文件路径
uint64_t userData; // 用户数据
};
IoResponse结构体
cpp
struct IoResponse {
uint64_t userData; // 用户数据
int32_t res; // 操作结果
uint32_t flags; // 标志位
IoResponse(uint64_t userData, int32_t res, uint32_t flags)
: userData(userData), res(res), flags(flags) {}
};
AsyncReadArg结构体
cpp
struct AsyncReadArg {
size_t lenRead = 0; // 已读取长度
NRef refReadBuf; // 读取缓冲区引用
explicit AsyncReadArg(NVal jsReadBuf) : refReadBuf(jsReadBuf) {}
~AsyncReadArg() = default;
};
AsyncWriteArg结构体
cpp
struct AsyncWriteArg {
NRef refWriteArrayBuf; // 写入数组缓冲区引用
std::unique_ptr<char[]> guardWriteStr; // 写入字符串保护
size_t actLen = 0; // 实际长度
explicit AsyncWriteArg(NVal refWriteArrayBuf) : refWriteArrayBuf(refWriteArrayBuf) {}
explicit AsyncWriteArg(std::unique_ptr<char[]> &&guardWriteStr)
: guardWriteStr(std::move(guardWriteStr)) {}
~AsyncWriteArg() = default;
};
2.3 继承与多态
继承关系:
FileNExporter
、StreamNExporter
、StatNExporter
等类继承自NExporter
基类AsyncReadArg
、AsyncWriteArg
等结构体提供异步操作参数封装IoResponse
等结构体提供操作结果封装
多态设计:
- 通过
NExporter
基类实现不同导出器的统一管理 - 异步回调机制支持多种操作类型的统一处理
- 接口抽象实现不同文件操作类型的统一管理
- 策略模式支持不同的IO策略选择
2.4 类图
uses uses creates uses uses <<abstract>> NExporter +Export() : bool +GetClassName() : string +Constructor() : napi_value FileNExporter -className_: string +Export() : bool +GetClassName() : string +GetPath() : napi_value +GetName() : napi_value +GetFD() : napi_value +Lock() : napi_value +TryLock() : napi_value +UnLock() : napi_value +Constructor() : napi_value StreamNExporter -mutex: mutex -className_: string +Export() : bool +GetClassName() : string +WriteSync() : napi_value +ReadSync() : napi_value +Write() : napi_value +Read() : napi_value +Close() : napi_value +Seek() : napi_value +Flush() : napi_value +GetFilePtr() : shared_ptr<FILE> +GetEntityOf() StatNExporter -className_: string +Export() : bool +GetClassName() : string +Constructor() : napi_value WatcherNExporter -className_: string +Export() : bool +GetClassName() : string +Constructor() : napi_value HyperAio -pImpl_: shared_ptr<Impl> -ioResultCallBack_: ProcessIoResultCallBack -harvestThread_: thread -stopThread_: atomic<bool> -initialized_: atomic<bool> +SupportIouring() : uint32_t +CtxInit() : int32_t +StartReadReqs() : int32_t +StartOpenReqs() : int32_t +StartCancelReqs() : int32_t +DestroyCtx() : int32_t -HarvestRes() : void -HandleRequestError() : void -HandleSqeError() : void -CheckParameter() : int32_t ReadInfo +fd: int32_t +len: uint32_t +offset: uint64_t +buf: void* +userData: uint64_t OpenInfo +dfd: int32_t +flags: int32_t +mode: uint32_t +path: void* +userData: uint64_t IoResponse +userData: uint64_t +res: int32_t +flags: uint32_t +IoResponse() : constructor AsyncReadArg +lenRead: size_t +refReadBuf: NRef +AsyncReadArg() : constructor +~AsyncReadArg() AsyncWriteArg +refWriteArrayBuf: NRef +guardWriteStr: unique_ptr<char[]> +actLen: size_t +AsyncWriteArg() : constructor +~AsyncWriteArg()
2.5 模块内部依赖框图
工具层 操作层 导出器层 文件访问接口模块内部结构 AsyncReadArg AsyncWriteArg IoResponse ReadInfo OpenInfo Open操作 Stat操作 Copy操作 Move操作 Hash操作 SecurityLabel操作 FileNExporter StreamNExporter StatNExporter WatcherNExporter HashNExporter LibN抽象层 FS模块 FileIO模块 Hash模块 SecurityLabel模块 Environment模块 HyperAio模块
3. 模块间交互
3.1 交互描述
与系统模块的交互:
- NAPI框架:通过NAPI框架提供JS接口绑定
- 文件系统:通过系统调用访问底层文件系统
- 权限管理:通过AccessToken模块验证文件访问权限
- 进程管理:通过系统进程管理机制处理跨进程操作
- 内存管理:通过系统内存管理机制处理缓冲区操作
- 异步处理:通过io_uring和libuv提供高性能异步IO
外部库依赖:
- NAPI:Node.js API框架,提供JS接口绑定
- libuv:跨平台异步IO库
- io_uring:Linux高性能异步IO接口
- OpenSSL:加密库,用于哈希计算
- c_utils:C语言工具库
- bounds_checking_function:边界检查函数库
异步处理机制:
- 使用NAPI异步工作队列处理JS回调
- 通过io_uring提供高性能异步IO
- 采用事件循环机制处理异步操作
- 支持多线程并发处理文件操作请求
3.2 事件驱动机制
事件类型:
- 文件打开事件
- 文件读写事件
- 文件关闭事件
- 文件变化监听事件
- 异步IO完成事件
- 错误处理事件
事件处理流程:
- 注册异步操作回调
- 执行文件操作请求
- 等待操作完成或错误
- 触发回调函数处理结果
- 清理资源和状态
3.3 外部依赖框图
应用层 系统服务 系统框架 文件访问接口模块 JS应用 Native应用 C应用 第三方应用 文件系统 权限管理 进程管理 内存管理 系统调用 NAPI框架 libuv io_uring OpenSSL c_utils LibN抽象层 FS模块 FileIO模块 Hash模块 SecurityLabel模块 Environment模块 HyperAio模块
4. 状态机转换图
4.1 状态机模型
文件访问接口模块的状态机包含以下主要状态:
文件操作状态:
FILE_CLOSED
- 文件已关闭FILE_OPENING
- 文件打开中FILE_OPENED
- 文件已打开FILE_READING
- 文件读取中FILE_WRITING
- 文件写入中FILE_ERROR
- 文件操作错误
流操作状态:
STREAM_IDLE
- 流空闲STREAM_READING
- 流读取中STREAM_WRITING
- 流写入中STREAM_FLUSHING
- 流刷新中STREAM_CLOSING
- 流关闭中STREAM_CLOSED
- 流已关闭
异步IO状态:
AIO_IDLE
- 异步IO空闲AIO_INITIALIZING
- 异步IO初始化中AIO_RUNNING
- 异步IO运行中AIO_PROCESSING
- 异步IO处理中AIO_COMPLETED
- 异步IO完成AIO_ERROR
- 异步IO错误
观察者状态:
WATCHER_IDLE
- 观察者空闲WATCHER_REGISTERING
- 观察者注册中WATCHER_ACTIVE
- 观察者活跃WATCHER_NOTIFYING
- 观察者通知中WATCHER_UNREGISTERING
- 观察者注销中WATCHER_INACTIVE
- 观察者非活跃
4.2 状态切换规则
文件操作流程:
- 文件初始状态为
FILE_CLOSED
- 调用open操作时,进入
FILE_OPENING
状态 - 打开成功后,进入
FILE_OPENED
状态 - 执行读写操作时,进入
FILE_READING
或FILE_WRITING
状态 - 操作完成后,回到
FILE_OPENED
状态 - 调用close操作时,进入
FILE_CLOSED
状态 - 发生错误时,进入
FILE_ERROR
状态
流操作流程:
- 流初始状态为
STREAM_IDLE
- 创建流时,进入相应的操作状态
- 读写操作时,进入
STREAM_READING
或STREAM_WRITING
状态 - 刷新操作时,进入
STREAM_FLUSHING
状态 - 关闭流时,进入
STREAM_CLOSING
状态 - 关闭完成后,进入
STREAM_CLOSED
状态
异步IO流程:
- 异步IO初始状态为
AIO_IDLE
- 初始化时,进入
AIO_INITIALIZING
状态 - 初始化完成后,进入
AIO_RUNNING
状态 - 处理请求时,进入
AIO_PROCESSING
状态 - 处理完成后,进入
AIO_COMPLETED
状态 - 发生错误时,进入
AIO_ERROR
状态
观察者流程:
- 观察者初始状态为
WATCHER_IDLE
- 注册时,进入
WATCHER_REGISTERING
状态 - 注册完成后,进入
WATCHER_ACTIVE
状态 - 文件变化时,进入
WATCHER_NOTIFYING
状态 - 通知完成后,回到
WATCHER_ACTIVE
状态 - 注销时,进入
WATCHER_UNREGISTERING
状态 - 注销完成后,进入
WATCHER_INACTIVE
状态
事件触发条件:
- 文件操作请求(打开、读取、写入、关闭)
- 流操作请求(创建、读写、刷新、关闭)
- 异步IO请求(初始化、处理、完成)
- 文件变化事件
- 错误和异常事件
4.3 状态机转换图
初始化 open()调用 打开成功 打开失败 read()调用 write()调用 close()调用 读取完成 写入完成 读取错误 写入错误 错误恢复 流初始化 创建读取流 创建写入流 flush()调用 flush()调用 刷新完成(读取) 刷新完成(写入) close()调用 close()调用 关闭完成 异步IO初始化 CtxInit()调用 初始化成功 初始化失败 StartReadReqs()调用 处理完成 继续处理 处理错误 错误恢复 观察者初始化 注册观察者 注册成功 注册失败 文件变化 通知完成 注销观察者 注销完成 FileClosed FileOpening FileOpened FileError FileReading FileWriting StreamIdle StreamReading StreamWriting StreamFlushing StreamClosing StreamClosed AioIdle AioInitializing AioRunning AioError AioProcessing AioCompleted WatcherIdle WatcherRegistering WatcherActive WatcherInactive WatcherNotifying WatcherUnregistering 文件已打开状态,可以执行
读取、写入、关闭等操作 流读取状态,支持
连续读取和刷新操作 异步IO处理状态,支持
高性能并发IO操作 观察者活跃状态,可以
监听文件变化事件
5. 接口设计
5.1 公共接口
文件操作接口:
打开文件
cpp
// JS接口
static napi_value Open(napi_env env, napi_callback_info info);
static napi_value OpenSync(napi_env env, napi_callback_info info);
// C接口
int OH_FileIO_GetFileLocation(char *uri, int uriLength, int *location);
- 功能:打开指定路径的文件
- 参数 :
env
- NAPI环境info
- 回调信息uri
- 文件URIuriLength
- URI长度location
- 输出参数,文件位置
- 返回值:操作结果码
- 异常处理:路径无效时返回错误码
读取文件
cpp
// JS接口
static napi_value ReadSync(napi_env env, napi_callback_info cbInfo);
static napi_value Read(napi_env env, napi_callback_info cbInfo);
- 功能:从文件中读取数据
- 参数 :
env
- NAPI环境cbInfo
- 回调信息
- 返回值:读取的数据或Promise对象
- 异常处理:文件未打开时抛出异常
写入文件
cpp
// JS接口
static napi_value WriteSync(napi_env env, napi_callback_info cbInfo);
static napi_value Write(napi_env env, napi_callback_info cbInfo);
- 功能:向文件中写入数据
- 参数 :
env
- NAPI环境cbInfo
- 回调信息
- 返回值:写入结果或Promise对象
- 异常处理:写入失败时抛出异常
获取文件信息
cpp
// JS接口
static napi_value Stat(napi_env env, napi_callback_info info);
static napi_value StatSync(napi_env env, napi_callback_info info);
- 功能:获取文件或目录的统计信息
- 参数 :
env
- NAPI环境info
- 回调信息
- 返回值:文件信息对象或Promise对象
- 异常处理:文件不存在时抛出异常
流操作接口:
创建流
cpp
// JS接口
static napi_value CreateStream(napi_env env, napi_callback_info info);
static napi_value CreateStreamSync(napi_env env, napi_callback_info info);
- 功能:创建文件流对象
- 参数 :
env
- NAPI环境info
- 回调信息
- 返回值:流对象或Promise对象
- 异常处理:创建失败时抛出异常
流刷新
cpp
// JS接口
static napi_value FlushSync(napi_env env, napi_callback_info cbInfo);
static napi_value Flush(napi_env env, napi_callback_info cbInfo);
- 功能:刷新流缓冲区
- 参数 :
env
- NAPI环境cbInfo
- 回调信息
- 返回值:刷新结果或Promise对象
- 异常处理:刷新失败时抛出异常
异步IO接口:
初始化异步IO
cpp
int32_t CtxInit(ProcessIoResultCallBack *callBack);
- 功能:初始化异步IO上下文
- 参数 :
callBack
- IO结果回调函数 - 返回值:操作结果码
- 异常处理:初始化失败时返回错误码
启动读取请求
cpp
int32_t StartReadReqs(ReadReqs *req);
- 功能:启动异步读取请求
- 参数 :
req
- 读取请求信息 - 返回值:操作结果码
- 异常处理:请求无效时返回错误码
启动打开请求
cpp
int32_t StartOpenReqs(OpenReqs *req);
- 功能:启动异步打开请求
- 参数 :
req
- 打开请求信息 - 返回值:操作结果码
- 异常处理:请求无效时返回错误码
哈希计算接口:
计算文件哈希
cpp
// JS接口
static napi_value Hash(napi_env env, napi_callback_info info);
- 功能:计算文件的哈希值
- 参数 :
env
- NAPI环境info
- 回调信息
- 返回值:哈希值或Promise对象
- 支持的算法:MD5、SHA1、SHA256
- 异常处理:文件不存在时抛出异常
安全标签接口:
设置安全标签
cpp
static bool SetSecurityLabel(const std::string &path, const std::string &dataLevel);
- 功能:设置文件的安全标签
- 参数 :
path
- 文件路径dataLevel
- 数据安全级别(s0-s4)
- 返回值:操作是否成功
- 异常处理:级别无效时返回false
获取安全标签
cpp
static std::string GetSecurityLabel(const std::string &path);
- 功能:获取文件的安全标签
- 参数 :
path
- 文件路径 - 返回值:安全标签字符串
- 异常处理:获取失败时返回默认级别
5.2 数据交换接口
NAPI接口绑定:
- 使用NAPI框架进行JS和C++之间的接口绑定
- 支持同步和异步两种调用模式
- 提供类型转换和错误处理机制
异步回调机制:
- 使用Promise模式处理异步操作
- 支持Callback模式进行异步回调
- 提供错误处理和异常传播机制
数据结构序列化:
- 支持基本数据类型的序列化
- 提供复杂对象的序列化支持
- 支持跨语言的数据交换
5.3 接口调用时序图
应用程序 NAPI框架 FS模块 Stream模块 HyperAio模块 系统调用 回调函数 fs.open(path, mode) Open()调用 open()系统调用 返回文件描述符 返回File对象 返回File对象 file.createStream() CreateStream()调用 fdopen()系统调用 返回FILE指针 返回Stream对象 返回Stream对象 stream.read(buffer) Read()调用 fread()系统调用 返回读取长度 返回读取数据 返回读取数据 hyperAio.startReadReqs(reqs) StartReadReqs()调用 提交io_uring请求 返回操作结果 返回操作结果 IoResponse回调 异步IO完成通知 stream.close() Close()调用 fclose()系统调用 返回关闭结果 返回关闭结果 返回关闭结果 应用程序 NAPI框架 FS模块 Stream模块 HyperAio模块 系统调用 回调函数
6. 总结
文件访问接口模块是OpenHarmony系统中文件管理框架的基础组件,通过LibN抽象层为应用程序提供统一的文件访问能力。该模块支持多种编程语言接口,提供同步和异步两种操作模式,并通过HyperAio技术实现高性能异步IO。
主要特点:
- 统一的多语言文件访问接口
- 支持同步和异步两种编程模型
- 高性能的异步IO能力
- 完善的文件安全控制机制
- 灵活的模块化架构设计
技术优势:
- 基于NAPI框架的跨语言接口绑定
- 利用io_uring技术的高性能异步IO
- 完善的错误处理和异常管理
- 支持多种文件操作和安全控制
- 高效的异步处理机制
该模块为OpenHarmony系统的文件管理提供了坚实的基础,支持各种文件操作需求,是构建文件管理应用的重要基础设施。通过模块化设计和多语言支持,为开发者提供了灵活、高效的文件访问能力。