Files
XCEngine/docs/api/resources/resource-file-system/iarchive.md

124 lines
2.1 KiB
Markdown

# IArchive 接口
## 头文件
```cpp
#include "XCEngine/Resources/ResourceFileSystem.h"
```
## 命名空间
`XCEngine::Resources`
## 类型
抽象接口类
## 描述
`IArchive` 是档案压缩包资源的抽象接口,定义了访问档案内资源的基本操作。具体的档案实现(如 ZIP、Pak 等)需要继承此接口。
## 方法详情
### Open
```cpp
virtual bool Open(const Containers::String& path) = 0;
```
打开指定路径的档案文件。
**参数:**
- `path` - 档案文件的路径
**返回值:**
- `bool` - 成功返回 `true`,失败返回 `false`
---
### Close
```cpp
virtual void Close() = 0;
```
关闭当前打开的档案,释放相关资源。
---
### Read
```cpp
virtual bool Read(const Containers::String& fileName, void* buffer, size_t size, size_t offset) const = 0;
```
从档案中读取指定的文件数据。
**参数:**
- `fileName` - 要读取的文件名
- `buffer` - 接收数据的缓冲区指针
- `size` - 要读取的字节数
- `offset` - 文件内的读取偏移量
**返回值:**
- `bool` - 成功返回 `true`,失败返回 `false`
---
### GetSize
```cpp
virtual size_t GetSize(const Containers::String& fileName) const = 0;
```
获取档案内指定文件的大小。
**参数:**
- `fileName` - 文件名
**返回值:**
- `size_t` - 文件大小(字节),若文件不存在则返回 0
---
### Exists
```cpp
virtual bool Exists(const Containers::String& fileName) const = 0;
```
检查档案内是否存在指定文件。
**参数:**
- `fileName` - 要检查的文件名
**返回值:**
- `bool` - 存在返回 `true`,不存在返回 `false`
---
### Enumerate
```cpp
virtual void Enumerate(const Containers::String& pattern, Containers::Array<Containers::String>& outFiles) const = 0;
```
枚举档案内匹配指定模式的文件。
**参数:**
- `pattern` - 文件名匹配模式(支持通配符)
- `outFiles` - 输出容器,接收匹配的文件名列表
---
### IsValid
```cpp
virtual bool IsValid() const = 0;
```
检查档案是否已正确打开且有效。
**返回值:**
- `bool` - 有效返回 `true`,无效返回 `false`