史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

这篇具有很好参考价值的文章主要介绍了史上最全面的UE4 文件操作,打开,读、写,增、删、改、查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前期操作

创建一个C++项目,并且创建一个C++蓝图库函数,并且加入头文件

#include "HAL/PlatformFilemanager.h"
#include "Misc/FileHelper.h"
#include "Misc/Paths.h"
#include "Developer/DesktopPlatform/Public/DesktopPlatformModule.h"
#include "Developer/DesktopPlatform/Public/IDesktopPlatform.h"
#include "Runtime/Core/Public/HAL/FileManagerGeneric.h"

史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

 二、打开文件

UFUNCTION(BlueprintCallable, DisplayName = "OpenFile", Category = "File")
	   static TArray<FString> OpenFile();
TArray<FString> UGenericArrayLibrary::OpenFile()
{
	TArray<FString> FilePath; //选择文件路径
	FString fileType = TEXT("*.*"); //过滤文件类型
	FString defaultPath = FPaths::ConvertRelativePathToFull(FPaths::ProjectDir()); //文件选择窗口默认开启路径
	IDesktopPlatform* DesktopPlatform = FDesktopPlatformModule::Get();
	bool bSuccess = DesktopPlatform->OpenFileDialog(nullptr, TEXT("打开文件"), defaultPath, TEXT(""), *fileType, EFileDialogFlags::None, FilePath);

	for (auto& name : FilePath)
	{
		UE_LOG(LogTemp, Warning,
			TEXT("%s"), *name);
	}
	if (bSuccess)
	{
		//文件选择成功,文件路径 path 
		UE_LOG(LogTemp,Warning,TEXT("Success"));
	}
	return FilePath;
}

三、读取和写入文件(字符串)

//读取文件(字符串)
	UFUNCTION(BlueprintCallable, DisplayName = "ReadFile", Category = "File")
		static FString ReadFile(FString path);
//写入文件(字符串)
	UFUNCTION(BlueprintCallable, DisplayName = "WriteFile", Category = "File")
		static bool WriteFile(FString saveFile,FString path);
FString UGenericArrayLibrary::ReadFile(FString path)
{
	FString resultString;
	FFileHelper::LoadFileToString(resultString,*path);
	return resultString;
}
///
bool UGenericArrayLibrary::WriteFile(FString saveFile,FString path)
{
	bool success;
	success = FFileHelper::SaveStringToFile(saveFile,*path);
	return success;
}

史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

 四、读取和写入字符数组

/读取文件(字符数组)
	UFUNCTION(BlueprintCallable, DisplayName = "ReadFileArray", Category = "File")
		static TArray<FString> ReadFileArray(FString path);
	//写入文件(字符数组)
	UFUNCTION(BlueprintCallable, DisplayName = "WriteFileArray", Category = "File")
		static bool WriteFileArray(TArray<FString> saveFile,FString path);
TArray<FString> UGenericArrayLibrary::ReadFileArray(FString path)
{
	TArray<FString> results;
	FFileHelper::LoadFileToStringArray(results, *path);
	return results;
}

bool UGenericArrayLibrary::WriteFileArray(TArray<FString> saveFile, FString path)
{
	return FFileHelper::SaveStringArrayToFile(saveFile,*path);
}

史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

五、 获取文件路径,获取文件名,获取文件后缀

	//获取文件所在路径
	UFUNCTION(BlueprintCallable, DisplayName = "Get FilePath", Category = "File")
		static FString GetFilePath(FString path);
	//获取文件名,不带后缀
	UFUNCTION(BlueprintCallable, DisplayName = "GetFileName", Category = "File")
		static FString GetFileName(FString InPath, bool bRemovePath);
	//获取文件后缀
	UFUNCTION(BlueprintCallable, DisplayName = "GetFileExtension", Category = "File")
		static FString GetFileExtension(FString InPath, bool bIncludeDot);
FString UGenericArrayLibrary::GetFilePath(FString path)
{
	FString Result;
	Result = FPaths::GetPath(*path);
	return Result;
}

FString UGenericArrayLibrary::GetFileName(FString InPath, bool bRemovePath)
{
	return FPaths::GetBaseFilename(*InPath,bRemovePath);
}

FString UGenericArrayLibrary::GetFileExtension(FString InPath, bool bIncludeDot)
{
	return FPaths::GetExtension(*InPath,bIncludeDot);
}

史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

六、增加一个文件夹 和删除一个文件夹

//创建一个文件夹
	UFUNCTION(BlueprintCallable, DisplayName = "CreateFolder", Category = "File")
		static void CreatFolder(FString FolderName);
//删除一个文件夹
	UFUNCTION(BlueprintCallable, DisplayName = "DeleteFolder", Category = "File")
		static void DeleteFolder(FString FolderName);
void UGenericArrayLibrary::CreatFolder(FString FolderName)
{
	FString Path = FPaths::ProjectDir()/ *FolderName;
	Path = FPaths::ConvertRelativePathToFull(*Path);
	FPlatformFileManager::Get().GetPlatformFile().CreateDirectoryTree(*Path);
}


void UGenericArrayLibrary::DeleteFolder(FString FolderName)
{
	FString Path = FPaths::ProjectDir() / *FolderName;
	Path = FPaths::ConvertRelativePathToFull(*Path);
	FPlatformFileManager::Get().Get().GetPlatformFile().DeleteDirectoryRecursively(*Path);
}

史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

 七、移动文件夹

//移动文件
	UFUNCTION(BlueprintCallable, Category = "MoveFileTo")
		static bool MoveFileTo(FString To, FString From);
bool UGenericArrayLibrary::MoveFileTo(FString To, FString From)
{

	return IFileManager::Get().Move(*To, *From);
}

八、查找文件夹

//查找文件目录下的所有文件
	UFUNCTION(BlueprintCallable, DisplayName = "FindFolder", Category = "File")
		static TArray<FString> FindFolder(FString Path, FString Filter, bool Files, bool Directory);
	//查找文件目录下所有文件无法删选查找
	UFUNCTION(BlueprintCallable, DisplayName = "GetFolderFiles", Category = "File")
		static TArray<FString> GetFolderFiles(FString Path);
TArray<FString> UGenericArrayLibrary::FindFolder(FString Path, FString Filter, bool Files, bool Directory)
{
	TArray<FString> FilePathList;
	FilePathList.Empty();
	FFileManagerGeneric::Get().FindFilesRecursive(FilePathList, *Path, *Filter, Files, Directory);
	return FilePathList;

}
//


TArray<FString> UGenericArrayLibrary::GetFolderFiles(FString Path)
{
	TArray<FString> Files;
	FPaths::NormalizeDirectoryName(Path);
	IFileManager& FileManager = IFileManager::Get();
	FString FinalPath = Path / TEXT("*");
	FileManager.FindFiles(Files, *FinalPath, true, true);
	return Files;
}

史上最全面的UE4 文件操作,打开,读、写,增、删、改、查文章来源地址https://www.toymoban.com/news/detail-407210.html

到了这里,关于史上最全面的UE4 文件操作,打开,读、写,增、删、改、查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UE4无法编译项目。是否要在Visual Studio中打开

    一开始是没装Visual Studio。安装完成后想创建C++项目出现如下报错。 无法编译该项目。要在Visual Studio中打开它吗? Running E:/Epic Games/UE_4.27/Engine/Binaries/DotNET/UnrealBuildTool.exe Development Win64 -Project=\\\"E:/Epic Games/UE_4.27/UnrealProjects/我的项目4/我的项目4.uproject\\\" -TargetType=Editor -Progress -NoE

    2024年02月03日
    浏览(58)
  • @EnableWebMvc注解让swagger-ui.html无法打开404报错问题及其解决方案(史上最全最详细)

    在工作中,通过Swagger2对项目的controller进行配置,以便于用户测试restful服务接口提高开发效率。 但是今天却出现了一个让我匪夷所思的问题就是在配置类里面加上@EnableWebMvc注解后(开启web配置支持)启动项目 发现访问Swagger的ui界面404 这个我就奇怪了,然后我尝试的把@Ena

    2023年04月17日
    浏览(41)
  • IDEA打开java项目后里面的java文件不能运行

    问题如图,IDEA打开java项目后里面的java文件不能运行,而且文件图标全部变成了 普通文件 的图标 Project Structure - Modules - Import Module 选择pom.xml文件 点击后虽然左侧没有显示,但是点击右下角“OK”就可以。 然后给src设置为Sources目录: 最后回到代码页面就发现文件已经变成

    2024年02月06日
    浏览(61)
  • UE4/5关于数字人MetaHuman打包项目后,打开游戏发生的关于Assertion failed: CastResult或者fatal error报错

    目录 笔者的打包经历 该方法不一定成功,但总得试试。 解决方法: 本来笔者因为各种各样的盗版原因,打算将本文放置在VIP的,但考虑到广大人士可能和笔者一样发生这种问题而无法解决,便决定还是开把伞。 Assertion failed: CastResult或者fatal error的报错是在打包成功后,再

    2024年02月15日
    浏览(112)
  • < Python全景系列-4 > 史上最全文件类型读写库大盘点!什么?还包括音频、视频?

    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语言! 本文系列第四篇,介绍史上最全PYTHON文件类型读写库大盘点!包含常用和不常用的大量文件格式!文本、音频

    2024年02月05日
    浏览(49)
  • UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)

    目录 IP地址 OnlineSubsystem 插件打开 模块加载 Config修改 Cpp 测试: 在之前的文章中,我们讲解了在同一个WiFi下相互连接的制作。 但是我们并不只想在同一个本地连接,我们想要的是在不同的WiFi下一起玩游戏。 所以我们先来讲解一下ip地址: 现在在同一个WiFi下,3个电脑的ip地

    2024年02月15日
    浏览(49)
  • 【UE Sequencer系列】01-前期准备

    新建一个工程 在虚幻商城中将我们需要的三种资产导入到新建的工程中 打开工程可以看到导入的资产 新建两个文件夹,一个用来存放音频,一个用来存放所有的Sequencer 导入音频(只支持wav格式) 选中声波,创建一个sound cue 打开“Forge”关卡 改变视口布局 第一个视口选择“

    2023年04月09日
    浏览(42)
  • Python史上最全种类数据库操作方法,你能想到的数据库类型都在里面!甚至还有云数据库!

    本文将详细探讨如何在Python中连接全种类数据库以及实现相应的CRUD(创建,读取,更新,删除)操作。我们将逐一解析连接MySQL,SQL Server,Oracle,PostgreSQL,MongoDB,SQLite,DB2,Redis,Cassandra,Microsoft Access,ElasticSearch,Neo4j,InfluxDB,Snowflake,Amazon DynamoDB,Microsoft Azure CosMos DB数

    2024年02月12日
    浏览(43)
  • 如何将skp文件中的模型导入到UE4中

    首先,skp文件是不能直接导入到UE4中的。 解决方法:用SketchUp(草图大师)打开skp文件,在SketchUp中将模型转换成fbx格式,然后再将模型导入UE4中 目录 1.打开skp文件 2.将skp文件导出为fbx格式 3.将fbx文件导入UE4中 1.打开skp文件         略(双击打开即可) 2.将skp文件导出为

    2024年02月04日
    浏览(37)
  • UE4 初始化全局着色器库所需的游戏文件缺失

    ​ 解决的方法是打包的主场景牵扯到的子场景放到同一个文件夹下 ​ ​ 如果移动了场景,会出现一个同名的壳(node),如果还改名了即使在一个文件夹下也会导致这个问题,解决办法是移动完之后右键Content点击fix up···

    2024年02月11日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包