【UE4基础】C++文件管理

简介 

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

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值