个人使用UE4 C++ 函数库(文件读写)
include
#include "Runtime/Core/Public/HAL/FileManagerGeneric.h"
.h
//读取文本文档 无默认路径
UFUNCTION(BlueprintCallable, Category = "Read&Write Files")
static FString ReadFileNotPure(FString Dir);
//写入文本文档 无默认路径
UFUNCTION(BlueprintCallable, Category = "Read&Write Files")
static bool WriteFile(FString FileName, FString content);
//读取文本文档 无默认路径 纯函数
UFUNCTION(BlueprintPure, Category = "Read&Write Files")
static FString ReadFile(FString Dir);
//查找文件 纯函数
UFUNCTION(BlueprintPure, Category = "Read&Write Files")
static TArray<FString> FindFiles(FString Path, FString Filter, bool Files, bool Directory);
//删除文件
UFUNCTION(BlueprintCallable, Category = "Read&Write Files")
static bool DeleteFile(FString FilePath);
/***
* bool& isNull: "&"表示其为输出值,在蓝图中,如果想要输出多个值,可以使用其创造一个变量,并在.cpp中赋值
***/
//查找文件
UFUNCTION(BlueprintCallable, Category = "Read&Write Files")
static void FindFilesNotPure(FString Path, FString Filter, bool isFiles, bool isDirectory, bool& isNull, TArray<FString>& Files);
//创建文件夹
UFUNCTION(BlueprintCallable, Category = "Read&Write Files")
static bool CreateDic(FString filePath);
//删除文件夹
UFUNCTION(BlueprintCallable, Category = "Read&Write Files")
static bool DeleteDic(FString filePath);
//保存数据 第一行字符 + 字符串数组
UFUNCTION(BlueprintCallable, Category = "Read&Write Files")
static bool SaveData(FString filePath, FString FirstLine,TArray<FString> TextArray);
.cpp
/***
* UMyBlueprintFunctionLibrary:类名
***/
FString UMyBlueprintFunctionLibrary::ReadFileNotPure(FString Dir)
{
FString Result;
FFileHelper::LoadFileToString(Result, *Dir);
return Result;
}
bool UMyBlueprintFunctionLibrary::WriteFile(FString FileName, FString content)
{
bool result;
result = FFileHelper::SaveStringToFile(content, *FileName);
return result;
}
FString UMyBlueprintFunctionLibrary::ReadFile(FString Dir)
{
FString Result;
FFileHelper::LoadFileToString(Result, *Dir);
return Result;
}
TArray<FString> UMyBlueprintFunctionLibrary::FindFiles(FString Path, FString Filter, bool Files, bool Directory)
{
TArray<FString> FilePathList;
FilePathList.Empty();
FFileManagerGeneric::Get().FindFilesRecursive(FilePathList, *Path, *Filter, Files, Directory);
return FilePathList;
}
void UMyBlueprintFunctionLibrary::FindFilesNotPure(FString Path, FString Filter, bool isFiles, bool isDirectory,bool& isNull, TArray<FString>& Files)
{
TArray<FString> FilePathList;
FilePathList.Empty();
FFileManagerGeneric::Get().FindFilesRecursive(FilePathList, *Path, *Filter, isFiles, isDirectory);
if (FilePathList.Num()>0)
{
isNull= 1;
}
else
{
isNull = 0;
}
}
bool UMyBlueprintFunctionLibrary::CreateDic(FString filePath)
{
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
return PlatformFile.CreateDirectory(*filePath);
}
bool UMyBlueprintFunctionLibrary::DeleteDic(FString filePath)
{
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
return PlatformFile.DeleteDirectory(*filePath);
}
bool UMyBlueprintFunctionLibrary::DeleteFile(FString FilePath)
{
return IFileManager::Get().Delete(*FilePath);
}
bool UMyBlueprintFunctionLibrary::SaveData(FString FilePath, FString FirstLine, TArray<FString> TextArray)
{
bool success;
if (FirstLine.Len()>0)
TextArray.Insert(FirstLine,0);
success = FFileHelper::SaveStringArrayToFile(TextArray,*FilePath,FFileHelper::EEncodingOptions::ForceUTF8);
return success;
}
注意:函数会在对应路径创造一个同名文件,若已有文件,则会覆盖现有文件,因此也可以选择使用时间命名