UE4文件及路径类库使用总结

本文介绍了虚幻引擎4(UE4)中的文件操作和路径处理技巧,包括使用IPlatformFile进行文件管理,FFileHelper进行文件读写,以及FPaths进行路径操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感谢博主,原博地址:https://blog.youkuaiyun.com/qq_35221523/article/details/80462176

一直在研究虚幻的插件,期间碰到许多诸如文件操作,路径操作等问题,总结记录一下。

环境:UE4版本4.19.2+Win10+VS2017。

文件操作类(一):IPlatformFile

//实例化IPlatformFile对象
IPlatformFile& fileManager = FPlatformFileManager::Get().GetPlatformFile();
//判断文件是否存在
fileManager.FileExists(const TCHAR* Filename);
//删除文件,执行了删除操作返回true,只读文件无法执行删除
fileManager.DeleteFile(const TCHAR* Filename);
//拷贝文件,选择参数为拷贝方式
fileManager.CopyFile(const TCHAR* To, const TCHAR* From, EPlatformFileRead ReadFlags = EPlatformFileRead::None, 
                                                        EPlatformFileWrite WriteFlags = EPlatformFileWrite::None);
//递归创建一个文件夹
fileManager.CreateDirectoryTree(const TCHAR* Directory);
//递归删除一个文件夹,包括包含的文件
fileManager.DeleteDirectoryRecursively(const TCHAR* Directory);
//将目标文件夹包含子文件夹下所有的文件以字符串数组的形式赋值给FoundFiles,可以附带文件扩展名过滤,
fileManager.FindFilesRecursively(TArray<FString>& FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension);
 

详见定义位置:Runtime/Core/Public/GenericPlatform/GenericPlatformFile.h

Runtime/Core/Public/HAL/PlatformFilemanager.h

文件操作类(二):FFileHelper

其实是封装好的线程安全的工具类,不过相对的功能不是很全,推荐读写文件时使用,由于方法较少,这里以写入文件及加载文件举栗:

//覆写模式写入文件内容
FFileHelper::SaveStringToFile( 
        const FString& Content, 
            const TCHAR* Filename, 
                EEncodingOptions EncodingOptions = EEncodingOptions::AutoDetect, 
                    IFileManager* FileManager = &IFileManager::Get(), 
                        uint32 WriteFlags = 0 );

其中,覆写模式只需要提供前两个参数就可以了,Content为写入内容,而后三种在自定义模式时需要全部提供,例如:

//换行并以追加模式写入文件内容
FFileHelper::SaveStringToFile("\r\n"+Content, *Filename,
		FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), EFileWrite::FILEWRITE_Append);

其中,EEncodingOptions 为编码格式的枚举类型,定义在 FileHelper.h 中,分别有以下五种:

  • AutoDetect
  • ForceAnsi
  • ForceUnicode
  • ForceUTF8
  • ForceUTF8WithoutBOM

倒数第二个参数为获取实例化的文件操作对象,

EFileWirte为写入模式的枚举类型,定义在 FileManager.h 中,分别有以下六种:

  • FILEWRITE_None
  • FILEWRITE_NoFail
  • FILEWRITE_NoReplaceExisting
  • FILEWRITE_EvenIfReadOnly
  • FILEWRITE_Append
  • FILEWRITE_AllowRead

需要注意的是,在C++中"\n"符号指光标移到下一行的当前位置,"\r"指光标移到行首,需结合使用。

//加载文件内容为字符串,赋值给参数Result,最后的可选参数是校验标识,一般用不到
FFileHelper::LoadFileToString( FString& Result, const TCHAR* Filename, EHashOptions VerifyFlags = EHashOptions::None );

详见定义位置:Runtime/Core/Public/Misc/FileHelper.h

路径操作类:FPaths

FPaths::RootDir();//返回根目录路径
FPaths::ProjectDir();//返回项目所在文件夹路径,注意:4.18版本为 GameDir();已经无法在新版中使用
FPaths::ProjectConfigDir();//返回项目配置文件夹路径
 
FPaths::RemoveDuplicateSlashes(FString& InPath);//删除InPath中重复的斜杠
FPaths::ConvertRelativePathToFull(const FString& InPath);//将相对路径转换为绝对路径并返回
FPaths::ValidatePath(const FString& InPath, FText* OutReason = nullptr);//校验路径返回是否正确,可选参数用于替换路径中的失效字符
 
//分割路径,根据给定分隔符 ExtensionPart 将InPath 分割为两部分,分别赋值给参数PathPart和FileNamePart,可以理解为左右两部分
FPaths::Split( const FString& InPath, FString& PathPart, FString& FilenamePart, FString& ExtensionPart );
 
//将输入的多个路径拼接成一个路径,可以拼接字符串,类似FString中的字符串拼接
FPaths::Combine(PathTypes&&... InPaths)

详见定义位置:Paths.h

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值