UE4+C++开发-(二十九)保存字符串数组到文本文件的标准方式FFileHelper::SaveStringArrayToFile
FFileHelper::SaveStringArrayToFile(SaveArray, *FileName, FFileHelper::EEncodingOptions::ForceUTF8)
使用 Unreal Engine 的 FFileHelper 工具类将字符串数组(TArray<FString>)保存到本地文件中,是处理文本文件写入的常用方法。我们来详细解析:
代码作用
cpp
运行
FFileHelper::SaveStringArrayToFile(SaveArray, *FileName, FFileHelper::EEncodingOptions::ForceUTF8);
这行代码将 SaveArray 中的所有字符串按顺序写入到 FileName 指定的文件中,每个字符串占一行,并强制使用 UTF-8 编码格式保存。
逐部分解析
-
FFileHelper
UE 提供的文件操作辅助类,封装了常用的文本文件读写功能(如字符串 / 数组与文件的相互转换),简化了跨平台文件处理逻辑。 -
SaveStringArrayToFileFFileHelper的静态方法,专门用于将TArray<FString>类型的字符串数组写入文件,每个元素作为一行存储。 -
参数解析
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
关键注意事项
-
文件路径处理
推荐使用FPaths类生成路径(如FPaths::ProjectSavedDir()、FPaths::DocumentsDir()),确保跨平台兼容性(Windows 用\,Linux 用/等)。 -
编码格式选择
ForceUTF8:强制 UTF-8 编码,支持多语言,建议优先使用。AutoDetect:自动检测编码(不推荐,可能导致乱码)。ForceAnsi:ANSI 编码(仅支持英文等少数字符,中文会乱码)。
-
返回值检查
函数返回bool类型,表示是否成功,实际开发中必须检查返回值以处理失败情况(如权限不足、路径不存在等)。 -
平台权限
在移动端或打包后的程序中,需确保写入路径有读写权限(如项目的Saved目录通常有权限,而系统目录可能无权限)。
与类似函数的区别
FFileHelper::SaveStringToFile:用于保存单个字符串(而非数组)到文件。FFileHelper::LoadFileToStringArray:与SaveStringArrayToFile对应,用于从文件加载内容到字符串数组(每行作为一个元素)。
总结:这行代码是 UE 中保存字符串数组到文本文件的标准方式,尤其适合存储结构化文本数据(如配置、存档、日志等),配合 UTF-8 编码能有效避免多语言字符乱码问题。
更多推荐

所有评论(0)