简介
UE4文件管理主要涉及到标准目录的获取,文件及目录的创建、删除、读取,文件内容的读写。
涉及到的主要类有:Paths、IFileManager、FFileHelper。
UE4标准目录的获取(Paths)
#include "Misc/Paths.h"
项目相关的目录
FString ProjectDirectory = FPaths::ProjectDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectDir: %s"),*ProjectDirectory);
FString ProjectConfigDirectory = FPaths::ProjectConfigDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectConfigDir: %s"),*ProjectConfigDirectory);
FString ProjectContentDirectory = FPaths::ProjectContentDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectContentDir: %s"),*ProjectContentDirectory);
FString ProjectIntermediateDirectory = FPaths::ProjectIntermediateDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectIntermediateDirectory: %s"),*ProjectIntermediateDirectory);
FString ProjectLogDirectory = FPaths::ProjectLogDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectLogDir: %s"),*ProjectLogDirectory);
FString ProjectModsDirectory = FPaths::ProjectModsDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectModsDir: %s"),*ProjectModsDirectory);
FString ProjectPluginsDirectory = FPaths::ProjectPluginsDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectPluginsDir: %s"),*ProjectPluginsDirectory);
FString ProjectSavedDirectory = FPaths::ProjectSavedDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectSavedDir: %s"),*ProjectSavedDirectory);
FString ProjectUserDirectory = FPaths::ProjectUserDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectUserDir: %s"),*ProjectUserDirectory);
FString ProjectPersistentDownloadDirectory = FPaths::ProjectPersistentDownloadDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectPersistentDownloadDir: %s"),*ProjectPersistentDownloadDirectory);
FString ProjectPlatformExtensionsDirectory = FPaths::ProjectPlatformExtensionsDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: ProjectPlatformExtensionsDir: %s"),*ProjectPlatformExtensionsDirectory);
引擎相关的目录
FString EngineDirectory = FPaths::EngineDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineDir: %s"),*EngineDirectory);
FString EngineConfigDirectory = FPaths::EngineConfigDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineConfigDir: %s"),*EngineConfigDirectory);
FString EngineContentDirectory = FPaths::EngineConfigDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineContentDir: %s"),*EngineContentDirectory);
FString EngineIntermediateDirectory = FPaths::EngineIntermediateDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineIntermediateDirectory: %s"),*EngineIntermediateDirectory);
FString EnginePluginsDirectory = FPaths::EnginePluginsDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EnginePluginsDir: %s"),*EnginePluginsDirectory);
FString EngineSavedDirectory = FPaths::EngineSavedDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineSavedDir: %s"),*EngineSavedDirectory);
FString EngineUserDirectory = FPaths::EngineUserDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineUserDir: %s"),*EngineUserDirectory);
FString EngineDefaultLayoutDir = FPaths::EngineDefaultLayoutDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineDefaultLayoutDir: %s"),*EngineDefaultLayoutDir);
FString EnginePlatformExtensionsDir = FPaths::EnginePlatformExtensionsDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EnginePlatformExtensionsDir: %s"),*EnginePlatformExtensionsDir);
FString EngineUserLayoutDir = FPaths::EngineUserLayoutDir();
UE_LOG(LogTemp, Warning, TEXT("FilePaths: EngineUserLayoutDir: %s"),*EngineUserLayoutDir);
文件及目录的创建、删除、读取(IFileManager)
#include "HAL/FileManagerGeneric.h"
IFileManager* FileManager = IFileManager::Get();
目录创建及删除
bool IFileManager::MakeDirectory( const TCHAR* Path, bool Tree=0 )
bool IFileManager::DeleteDirectory( const TCHAR* Path, bool RequireExists=0, bool Tree=0 )
读取某文件夹下的文件(可以设置后缀过滤)
void IFileManager::FindFiles( TArray<FString>& FileNames, const TCHAR* Filename, bool Files, bool Directories)
void IFileManager::FindFiles(TArray<FString>& FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension = nullptr)
void IFileManager::FindFilesRecursive( TArray<FString>& FileNames, const TCHAR* StartDirectory, const TCHAR* Filename, bool Files, bool Directories, bool bClearFileNames=true)
文件内容读写(FFileHelper)
读取文件内容到FString
FString fullPath = "D:/Test/test.json";
FString jsonStr;
FFileHelper::LoadFileToString(jsonStr, fullPath.GetCharArray().GetData(), FFileHelper::EHashOptions::None, 0);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Orange, FString::Printf(TEXT("jsonStr is: %s"), *jsonStr));
读取内容到Byte数组中
TArray<uint8> data;
FString fullPath = "D:/Test/test.dat"
bool result = FFileHelper::LoadFileToArray(data, fullPath.GetCharArray().GetData());