2.5 KiB
2.5 KiB
FileWriter
命名空间: XCEngine::Core
类型: class
头文件: XCEngine/Core/FileWriter.h
描述: 一个基于 FILE* 的轻量文件写入封装,提供打开、关闭、写入和刷新能力。
角色概述
FileWriter 是当前 Core 顶层里非常朴素的 I/O 工具类。它没有做复杂的路径解析、目录创建或异步写入,只是把一组常见的 C 文件写入操作包装成 RAII 风格接口。
这类工具在引擎里常用于:
- 简单二进制导出
- 文本或日志写出
- 不需要完整文件系统抽象时的底层落盘
当前实现行为
1. 构造和析构遵循 RAII
- 默认构造不会自动打开文件
- 带路径构造会立刻尝试
Open() - 析构函数会自动
Close()
2. Open() 会先关闭旧文件
当前 Open(const char* filePath, bool append) 的第一步就是调用 Close()。这意味着:
- 可以重复复用同一个
FileWriter - 打开新文件前,旧句柄会先被安全关闭
3. 始终以二进制模式打开
当前模式字符串是:
append == false->"wb"append == true->"ab"
也就是说,它没有文本模式分支,始终按二进制写入处理。
4. Write() 的失败条件很直接
Write(const char* data, size_t length) 在以下情况返回 false:
- 文件没打开
data == nullptrlength == 0fwrite未完整写入指定长度
这意味着“空写入”也会被视为失败,而不是 no-op success。
5. Write(const Containers::String&) 只是便利重载
它会转发到字节写入版本,使用:
str.CStr()str.Length()
当前没有额外编码转换或换行处理。
当前代码库中的使用情况
在当前取证范围内,没有看到 FileWriter 在 engine/src 里形成广泛调用链。因此它当前更像底层通用工具,而不是高频核心主线类型。
线程语义
- 当前实现没有加锁。
FILE*句柄由对象内部独占持有。- 默认应按单线程顺序使用。
当前实现限制
- 不会自动创建父目录。
- 只提供写入,不提供读取。
- 打开模式固定为二进制写/追加。
Write(length == 0)会返回false。- 没有看到直接单元测试覆盖。