# FileArchive **命名空间**: `XCEngine::Resources` **类型**: `class` **头文件**: `XCEngine/Core/IO/FileArchive.h` **继承自**: `IArchive` **描述**: 文件归档读取器,将文件系统目录作为虚拟归档进行访问。 ## 概述 `FileArchive` 实现了 `IArchive` 接口,用于将文件系统目录作为虚拟归档进行访问。它维护已打开目录的路径和有效性状态,支持读取文件、检查存在性、获取文件大小等操作。 ## 继承关系 ``` IArchive └── FileArchive ``` ## 公共方法 | 方法 | 描述 | |------|------| | [`FileArchive()`](filearchive.md) | 默认构造 | | [`~FileArchive()`](filearchive.md) | 析构函数,自动关闭归档 | | [`Open(...)`](open.md) | 打开归档目录 | | [`Close()`](close.md) | 关闭归档 | | [`Read(...)`](read.md) | 读取文件数据 | | [`GetSize(...)`](getsize.md) | 获取文件大小 | | [`Exists(...)`](exists.md) | 检查文件是否存在 | | [`Enumerate(...)`](enumerate.md) | 枚举匹配的文件(暂未实现) | | [`IsValid()`](filearchive.md) | 检查归档是否有效 | | [`GetPath()`](filearchive.md) | 获取归档路径 | ## 使用示例 ```cpp #include // 创建并打开归档 FileArchive archive; if (archive.Open("resources/textures/")) { // 检查文件是否存在 if (archive.Exists("player.png")) { // 获取文件大小 size_t size = archive.GetSize("player.png"); // 读取文件内容 Containers::Array buffer(size); if (archive.Read("player.png", buffer.Data(), size, 0)) { // 处理文件数据 } } // 枚举匹配的文件 Containers::Array files; archive.Enumerate("*.png", files); archive.Close(); } ``` ## 实现说明 - `Enumerate()` 当前为 stub,仅清空输出数组,未实现模式匹配功能。 ## 相关文档 - [Resources 模块总览](../resources.md) - 返回模块总览 - [IArchive](../resource-file-system/iarchive.md) - 归档接口定义 - [ResourceFileSystem](../resource-file-system/index.md) - 资源文件系统