UE C++操作外部文件整理

2022-07-07  本文已影响0人  SilenceTT

用到的头文件:

#include "Runtime/Core/Public/HAL/FileManagerGeneric.h"
#include "Developer/DesktopPlatform/Public/IDesktopPlatform.h"
#include "Developer/DesktopPlatform/Public/DesktopPlatformModule.h"

文件夹

image.png

创建文件夹:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static void CreateDic(FString filePath);
void UFilesManager::CreateDic(FString filePath)
{
    IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
    PlatformFile.CreateDirectory(*filePath);
}

删除文件夹:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static void DeleteDic(FString filePath);
void UFilesManager::DeleteDic(FString filePath)
{
    IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
    PlatformFile.DeleteDirectory(*filePath);
}

打开文件夹:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static void OpenWindowsFiles(FString InUNCPath, FString& OutPath);
void UFilesManager::OpenWindowsFiles(FString InUNCPath, FString& OutPath)
{
        IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
        DesktopPlatform->OpenDirectoryDialog(
            nullptr,
            TEXT("Open Directory"),
            InUNCPath,
            OutPath
        );  
}

遍历文件夹:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static void ScanDirectory(TArray<FString>& Files, const FString& FilePath, const FString& Extension);
void UFilesManager::ScanDirectory(TArray<FString>& Files, const FString& FilePath, const FString& Extension)
{

    FString SearchedFiles = FilePath + Extension;
    TArray<FString> FindedFiles;

    IFileManager::Get().FindFiles(FindedFiles, *SearchedFiles, true, false);

    FString SearchFile = "";

    for (int i = 0; i < FindedFiles.Num(); i++)
    {
        SearchFile = FilePath + FindedFiles[i];
        Files.Add(SearchFile);
    }
}

文件操作

image.png

读取文件:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static FString ReadStringToFile(FString Dir);
FString UFilesManager::ReadStringToFile(FString Dir)
{
    FString Result;
    FFileHelper::LoadFileToString(Result, *Dir);
    return Result;
}

查找文件:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static void FindFiles(TArray<FString>& Files,FString Path, FString Filter, bool InFiles, bool InDirectory);
void UFilesManager::FindFiles(TArray<FString>& Files, FString Path, FString Filter, bool InFiles, bool InDirectory)
{
    FFileManagerGeneric::Get().FindFilesRecursive(Files, *Path, *Filter, InFiles, InDirectory);
}

删除文件:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static bool DeleteFile(FString FilePath);
bool UFilesManager::DeleteFile(FString FilePath)
{
    return IFileManager::Get().Delete(*FilePath);
}

写入文件:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static void WriteStringToFile(FString FileName, FString content);
void UFilesManager::WriteStringToFile(FString FileName, FString content)
{
    FFileHelper::SaveStringToFile(content, *FileName);
}

移动文件:

UFUNCTION(BlueprintCallable, Category = "File operation")
    static bool MoveFileTo(FString To, FString From);
void UFilesManager::WriteStringToFile(FString FileName, FString content)
{
    FFileHelper::SaveStringToFile(content, *FileName);
}

打开文件(exe文件):

UFUNCTION(BlueprintCallable, Category = "File operation")
    static void OpenFile(FString FilePath);
void UFilesManager::OpenFile(FString FilePath)
{
    FPlatformProcess::CreateProc(*FilePath, nullptr, true, false, false, nullptr, 1, nullptr, nullptr);

}

获取文件字节:

UFUNCTION(BlueprintCallable, Category = "File operation")
     static void GetFileSize(const FString& FilePath ,int64& FileSize);
void UFilesManager::GetFileSize(const FString& FilePath, int64& FileSize)
{
    if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*FilePath))
    {
        GEngine->AddOnScreenDebugMessage(-1, 3.0f, FColor::Red, TEXT("Find File error!"));
        FileSize = 0 ;
    }
    FileSize = FPlatformFileManager::Get().GetPlatformFile().FileSize(*FilePath);
}

[UE4] C++操作外部文件整理 - 知乎 (zhihu.com)

上一篇 下一篇

猜你喜欢

热点阅读