07-4 文件读写与访问

文件读写与访问

FPlatformFileManager定义在Core\Public\HAL\PlatformFileManager.h中,通过该对象的全局单例(Get()),获取到``类型的引用,这个对象提供当前平台的通用文件访问接口。

auto& ifile = FPlatformFileManager::Get()->GetPlatformFile();

​ 这个接口类型,定义于Core\Public\GenericPlatform\GenericPlatformFile.h中。

IPlatformFile常用函数表

操作 函数 备注
拷贝函数 / 提供文件目录和文件的拷贝操作
递归拷贝某个目录 CopyDirectoryTree
拷贝当前文件 CopyFile
创建函数 / 提供创建文件和目录的操作,目录创建成功或者目录已经存在 都会返回真
创建目录 CreateDirectory
创建一个目录树,即给定一个路径字符串,如果对应路径的父目录不存在,也会被创建出来。 CreateDirectoryTree
删除函数 / 删除指定目录或文件,成功删除返回真,否则失败
删除指定目录 DeleteDirectory
递归删除指定目录 DeleteDirectoryRecursively
删除指定文件 DeleteFile
移动函数 /
移动指定文件 MoveFile
属性函数 / 提供对文件、目录的属性访问操作
检查目录是否存在 DirectoryExists
检查文件是否存在 FileExists
获得文件状态信息,返回FFileStatData类型对象。
该对象包含了所有的信息,可以通过备注的接口来快捷获取它们。
GetStateData image-20240201211954802
获得当前文件上一次访问的时间 GetAccessTimeStamp
设置文件的修改时间 SetTimeStamp
获得文件大小,如果文件不存在返回-1 FileSize
文件是否只读 IsReadOnly
遍历函数 / 该类函数都需要传入一个FDirectoryVisitorFDirectoryStatVisitor对象作为参数。
你可以创造一个类继承自该类,然后重写Visit函数。每当遍历到一个文件或者目录时,遍历函数会调用Visitor对象的Visit函数以通知执行自定义的逻辑
遍历某个目录 IterateDirectory
递归遍历某个目录 IterateDirectoryRecursively
遍历文件目录状态,Visit函数参数为状态对象而非路径字符串; IterateDirectoryStat
同上,递归遍历 IterateDirectoryStatRecursively
读写函数 / 最底层的读写函数往往返回IFileHandle类型的句柄,这个句 柄提供了直接读写二进制的功能。如果非绝对必要,可以考虑更高层的API,下文有讲述
打开一个文件用于读取,返回IFileHandle类型的句柄用于读取 OpenRead
打开一个文件用于写入,返回IFileHandle类型的句柄 OpenWrite

FFileHelper常用函数表

​ 针对一些极其普遍的需求,虚幻引擎提供了一套更简单的方式用于读写文件内容,即FFileHelper类,位于CoreMisc头文件中,提供以下静态函数

操作 函数名
直接将路径指定的文件读取到一个TArray类型的二进制数组中 LoadFileToArray
直接将路径指定的文本文件读取到一个FString类型的字符串中。请注意,字符串有长度限制,不要试图读取超大文本文件 LoadFileToString
保存一个二进制数组到文件中 SaveArrayToFile
保存一个字符串到指定文件中 SaveStringToFile
在硬盘中创建一个BMP文件 CreateBitmap
读取一个ANSI编码的文本文件到一个FString数组中,每行对应一个FString类型的对象 LoadANSITextFileToStrings