用到的头文件:
#include "Runtime/Core/Public/HAL/FileManagerGeneric.h"
#include "Developer/DesktopPlatform/Public/IDesktopPlatform.h"
#include "Developer/DesktopPlatform/Public/DesktopPlatformModule.h"
文件夹

创建文件夹:
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);
}
}
文件操作

读取文件:
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);
}
网友评论