文件常用函数

文件相关

//实例化IPlatformFile对象

IPlatformFile& fileManager = FPlatformFileManager::Get().GetPlatformFile();

//判断文件是否存在

fileManager.FileExists(const TCHAR* Filename);
----> FPath:FileExists

//删除文件,执行了删除操作返回true,只读文件无法执行删除

fileManager.DeleteFile(const TCHAR* Filename);

//拷贝文件,选择参数为拷贝方式, To注意需要有文件名

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);

路径相关

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)

MD5

FMD5::HashAnsiString(TEXT("someStuff"));

FString HashStringWithSHA1(const FString &InString)
{
FSHAHash StringHash;
FSHA1::HashBuffer(TCHAR_TO_ANSI(*InString), InString.Len(), StringHash.Hash);
return StringHash.ToString();
}

对话框

#include “DesktopPlatform\Public\DesktopPlatformModule.h”

  1. 打开文件对话框
TArray<FString> OutFiles;
FDesktopPlatformModule::Get()->OpenFileDialog( FSlateApplication::Get().FindBestParentWindowHandleForDialogs(nullptr),
TEXT("请选择资源"),
TEXT("/"),
TEXT(""),
//TEXT("All Files (%s)|%s|%s"),
//TEXT("(Image Files)|*.BMP;*.JPG;*.PNG;*.JPEG;)"), //.xls/.xlsm/.csv/
LOCTEXT("Excel", "Trace files (*.xls)|*.xls;*xlsx;*.xlsm;*.csv|All files (*.*)|*.*").ToString(),
(uint32_t)EFileDialogFlags::None,
OutFiles
);
  1. 保存文件
bool SaveFileDialog(const void* ParentWindowHandle, const FString& DialogTitle, const FString& DefaultPath, const FString& DefaultFile, const FString& FileTypes, uint32 Flags, TArray<FString>& OutFilenames)
  1. 打开文件夹对话框
bool OpenDirectoryDialog(const void* ParentWindowHandle, const FString& DialogTitle, const FString& DefaultPath, FString& OutFolderName)

文件读写

CSV读写

Json读写