FFileHelper::SaveStringArrayToFile(SaveArray, *FileName, FFileHelper::EEncodingOptions::ForceUTF8)

使用 Unreal Engine 的 FFileHelper 工具类将字符串数组(TArray<FString>)保存到本地文件中,是处理文本文件写入的常用方法。我们来详细解析:

代码作用

cpp

运行

FFileHelper::SaveStringArrayToFile(SaveArray, *FileName, FFileHelper::EEncodingOptions::ForceUTF8);

这行代码将 SaveArray 中的所有字符串按顺序写入到 FileName 指定的文件中,每个字符串占一行,并强制使用 UTF-8 编码格式保存。

逐部分解析

  1. FFileHelper
    UE 提供的文件操作辅助类,封装了常用的文本文件读写功能(如字符串 / 数组与文件的相互转换),简化了跨平台文件处理逻辑。

  2. SaveStringArrayToFile
    FFileHelper 的静态方法,专门用于将 TArray<FString> 类型的字符串数组写入文件,每个元素作为一行存储。

  3. 参数解析

    • SaveArray:要写入的字符串数组(TArray<FString> 类型),数组中的每个 FString 会作为文件中的一行。
    • *FileName:文件路径(FString 类型,需通过 * 解引用为 TCHAR*),指定文件的保存位置(如 FPaths::ProjectSavedDir() + "Data.txt")。
    • FFileHelper::EEncodingOptions::ForceUTF8:文件编码格式,这里指定为强制使用 UTF-8 编码(支持多语言字符,避免中文等字符乱码)。

完整使用示例

cpp

运行

// 1. 准备要保存的字符串数组
TArray<FString> SaveArray;
SaveArray.Add(TEXT("玩家ID: 10001"));
SaveArray.Add(TEXT("昵称: 张三"));
SaveArray.Add(TEXT("等级: 20"));
SaveArray.Add(TEXT("金币: 1500"));

// 2. 定义保存路径(项目的 Saved 目录下)
FString FileName = FPaths::ProjectSavedDir() + TEXT("PlayerInfo.txt");

// 3. 写入文件(使用 UTF-8 编码)
bool bSuccess = FFileHelper::SaveStringArrayToFile(
    SaveArray, 
    *FileName, 
    FFileHelper::EEncodingOptions::ForceUTF8
);

// 4. 检查是否成功
if (bSuccess)
{
    UE_LOG(LogTemp, Log, TEXT("文件保存成功:%s"), *FileName);
}
else
{
    UE_LOG(LogTemp, Error, TEXT("文件保存失败:%s"), *FileName);
}

执行后,PlayerInfo.txt 文件内容如下:

plaintext

玩家ID: 10001
昵称: 张三
等级: 20
金币: 1500

关键注意事项

  1. 文件路径处理
    推荐使用 FPaths 类生成路径(如 FPaths::ProjectSavedDir()FPaths::DocumentsDir()),确保跨平台兼容性(Windows 用 \,Linux 用 / 等)。

  2. 编码格式选择

    • ForceUTF8:强制 UTF-8 编码,支持多语言,建议优先使用。
    • AutoDetect:自动检测编码(不推荐,可能导致乱码)。
    • ForceAnsi:ANSI 编码(仅支持英文等少数字符,中文会乱码)。
  3. 返回值检查
    函数返回 bool 类型,表示是否成功,实际开发中必须检查返回值以处理失败情况(如权限不足、路径不存在等)。

  4. 平台权限
    在移动端或打包后的程序中,需确保写入路径有读写权限(如项目的 Saved 目录通常有权限,而系统目录可能无权限)。

与类似函数的区别

  • FFileHelper::SaveStringToFile:用于保存单个字符串(而非数组)到文件。
  • FFileHelper::LoadFileToStringArray:与 SaveStringArrayToFile 对应,用于从文件加载内容到字符串数组(每行作为一个元素)。

总结:这行代码是 UE 中保存字符串数组到文本文件的标准方式,尤其适合存储结构化文本数据(如配置、存档、日志等),配合 UTF-8 编码能有效避免多语言字符乱码问题

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐