当前位置: 首页 > news >正文

UE5文件操作

       首先在虚幻引擎中创建UMyBlueprintFunctionLibrary类,可以在该类中写我们重复利用的功能,并且这些功能不依赖于特定的游戏对象,方便全局调用。

1.文件的读取和写入

	UFUNCTION(BlueprintCallable, Category = "File")static bool loadStringFromFile(FString filePath, FString& resultString);UFUNCTION(BlueprintCallable, Category = "File")static bool writeStringToFile(TArray<FString> saveFile, FString filePath);
bool UMyBlueprintFunctionLibrary::loadStringFromFile(FString filePath, FString& resultString)
{if (!filePath.IsEmpty()){if (FFileHelper::LoadFileToString(resultString, *filePath)){return true;}else{//error}}return false;
}bool UMyBlueprintFunctionLibrary::writeStringToFile(TArray<FString> saveFile, FString filePath)
{if (!filePath.IsEmpty()){if (FFileHelper::SaveStringArrayToFile(saveFile, *filePath)){return true;}else{//error}}return false;
}

2.获取文件名、后缀名、文件名

        

	UFUNCTION(BlueprintCallable, Category = "File")static FString GetFilePath(FString path);UFUNCTION(BlueprintCallable, Category = "File")static FString GetFileName(FString InPath,bool bRemovePath);UFUNCTION(BlueprintCallable, Category = "File")static FString GetFileExtension(FString InPath, bool bInCludeDot);
FString UMyBlueprintFunctionLibrary::GetFilePath(FString path)
{FString result;result = FPaths::GetPath(*path);return result;
}FString UMyBlueprintFunctionLibrary::GetFileName(FString InPath, bool bRemovePath)
{return FPaths::GetBaseFilename(*InPath,bRemovePath);
}FString UMyBlueprintFunctionLibrary::GetFileExtension(FString InPath, bool bInCludeDot)
{return FPaths::GetExtension(*InPath,bInCludeDot);
}

3.创建文件夹和删除文件夹

	UFUNCTION(BlueprintCallable, Category = "File")static void CreateFolder(FString FolderName);UFUNCTION(BlueprintCallable, Category = "File")static void DeleteFolder(FString FolderName);

  在cpp中引入FileManagerGeneric.h

#include "Runtime/Core/Public/HAL/FileManagerGeneric.h"
void UMyBlueprintFunctionLibrary::CreateFolder(FString FolderName)
{//FString path = FPaths::ProjectContentDir();FPlatformFileManager::Get().GetPlatformFile().CreateDirectoryTree(*FolderName);
}void UMyBlueprintFunctionLibrary::DeleteFolder(FString FolderName)
{//FString path = FPaths::ProjectContentDir();FPlatformFileManager::Get().GetPlatformFile().DeleteDirectoryRecursively(*FolderName);
}

4.文件的移动和查找

	UFUNCTION(BlueprintCallable, Category = "File")static bool MoveFileTo(FString To, FString From);UFUNCTION(BlueprintCallable, Category = "File")static TArray<FString> FindFileFolder(FString Path, FString Filter, bool Files, bool Directory);
bool UMyBlueprintFunctionLibrary::MoveFileTo(FString To, FString From)
{return IFileManager::Get().Move(*To,*From);
}TArray<FString> UMyBlueprintFunctionLibrary::FindFileFolder(FString Path, FString Filter, bool Files, bool Directory)
{TArray<FString> FilePathList;FilePathList.Empty();FFileManagerGeneric::Get().FindFilesRecursive(FilePathList, *Path, *Filter, Files, Directory);return FilePathList;
}

5.全部代码

h文件部分:

// Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"/*** */
UCLASS()
class STUDYCODEPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{GENERATED_BODY()
public:UFUNCTION(BlueprintCallable, Category = "File")static bool loadStringFromFile(FString filePath, FString& resultString);UFUNCTION(BlueprintCallable, Category = "File")static bool writeStringToFile(TArray<FString> saveFile, FString filePath);UFUNCTION(BlueprintCallable, Category = "File")static FString GetFilePath(FString path);UFUNCTION(BlueprintCallable, Category = "File")static FString GetFileName(FString InPath,bool bRemovePath);UFUNCTION(BlueprintCallable, Category = "File")static FString GetFileExtension(FString InPath, bool bInCludeDot);UFUNCTION(BlueprintCallable, Category = "File")static void CreateFolder(FString FolderName);UFUNCTION(BlueprintCallable, Category = "File")static void DeleteFolder(FString FolderName);UFUNCTION(BlueprintCallable, Category = "File")static bool MoveFileTo(FString To, FString From);UFUNCTION(BlueprintCallable, Category = "File")static TArray<FString> FindFileFolder(FString Path, FString Filter, bool Files, bool Directory);
};

cpp文件部分:

// Fill out your copyright notice in the Description page of Project Settings.#include "MyBlueprintFunctionLibrary.h"
#include "Runtime/Core/Public/HAL/FileManagerGeneric.h"bool UMyBlueprintFunctionLibrary::loadStringFromFile(FString filePath, FString& resultString)
{if (!filePath.IsEmpty()){if (FFileHelper::LoadFileToString(resultString, *filePath)){return true;}else{//error}}return false;
}bool UMyBlueprintFunctionLibrary::writeStringToFile(TArray<FString> saveFile, FString filePath)
{if (!filePath.IsEmpty()){if (FFileHelper::SaveStringArrayToFile(saveFile, *filePath)){return true;}else{//error}}return false;
}FString UMyBlueprintFunctionLibrary::GetFilePath(FString path)
{FString result;result = FPaths::GetPath(*path);return result;
}FString UMyBlueprintFunctionLibrary::GetFileName(FString InPath, bool bRemovePath)
{return FPaths::GetBaseFilename(*InPath,bRemovePath);
}FString UMyBlueprintFunctionLibrary::GetFileExtension(FString InPath, bool bInCludeDot)
{return FPaths::GetExtension(*InPath,bInCludeDot);
}void UMyBlueprintFunctionLibrary::CreateFolder(FString FolderName)
{//FString path = FPaths::ProjectContentDir();FPlatformFileManager::Get().GetPlatformFile().CreateDirectoryTree(*FolderName);
}void UMyBlueprintFunctionLibrary::DeleteFolder(FString FolderName)
{//FString path = FPaths::ProjectContentDir();FPlatformFileManager::Get().GetPlatformFile().DeleteDirectoryRecursively(*FolderName);
}bool UMyBlueprintFunctionLibrary::MoveFileTo(FString To, FString From)
{return IFileManager::Get().Move(*To,*From);
}TArray<FString> UMyBlueprintFunctionLibrary::FindFileFolder(FString Path, FString Filter, bool Files, bool Directory)
{TArray<FString> FilePathList;FilePathList.Empty();FFileManagerGeneric::Get().FindFilesRecursive(FilePathList, *Path, *Filter, Files, Directory);return FilePathList;
}

相关文章:

UE5文件操作

首先在虚幻引擎中创建UMyBlueprintFunctionLibrary类&#xff0c;可以在该类中写我们重复利用的功能&#xff0c;并且这些功能不依赖于特定的游戏对象&#xff0c;方便全局调用。 1.文件的读取和写入 UFUNCTION(BlueprintCallable, Category "File")static bool lo…...

element plus 去掉select选择框的边框,并修改右侧图标

1.去掉选择框边框 ::v-deep .el-select__wrapper{ box-shadow: none; } ::v-deep .is-hovering{ box-shadow: none !important; }2.修改选择框右侧图标 新建CaretBottom.vue文件内容&#xff1a; <template><el-icon><CaretBottom /></el-icon> <…...

Ceph KernelFuse GetSet Quota

Kernel fuse set示例...

JVM学习-字节码指令集(二)

对象的创建与访问指令 创建指令 虽然类实例和数组都是对象&#xff0c;但Java虚拟机对类实例和数组的创建和操作使用了不同的字节码指令创建类实例指令&#xff1a;new 它接收一个操作数&#xff0c;指向常量池的索引&#xff0c;表示要创建的类型&#xff0c;执行完成后&am…...

解密网络流量监控:优化IT运维的利器

引言&#xff1a; 在当今数字化时代&#xff0c;网络流量监控是维护网络稳定与业务连续性的关键。作为一名资深网络工程师&#xff0c;我将分享一些关于网络流量监控的重要知识&#xff0c;并探讨如何在IT运维中运用这一工具优化网络性能&#xff0c;确保业务的顺畅进行。 1. 网…...

oracle 分区表常用语句(2)

给分区表增加分区 第一种不存在MAXVALUE(直接添加即可&#xff09; ALTER TABLE T6 ADD PARTITION P5 VALUES LESS THAN(TO_DATE( 2018-08-01 00:00:00, SYYYY-MM-DD HH24:MI:SS, NLS_CALENDARGREGORIAN));第二种存在MAXVALUE alter table T6 split PARTITION P4 at(TO_DAT…...

Python函数式编程进阶:用函数实现设计模式

文章目录 函数式编程进阶&#xff1a;用函数实现设计模式案例实现&#xff1a;构建“策略”模式使用函数实现”策略“模式享元 选择最佳策略&#xff1a;简单的方式 globals关键字 函数式编程进阶&#xff1a;用函数实现设计模式 案例实现&#xff1a;构建“策略”模式 策略模…...

Ingress controller:Kubernetes 的瑞士军刀

原文作者&#xff1a;Brian Ehlert of F5 原文链接&#xff1a;Ingress controller&#xff1a;Kubernetes 的瑞士军刀 转载来源&#xff1a;NGINX 中文官网 NGINX 唯一中文官方社区 &#xff0c;尽在 nginx.org.cn 许多人认为 Ingress controller&#xff08;Ingress 控制器&…...

uniapp tabBar app页面滚动闪屏的问题

我在做app的时候&#xff0c;调试tabBar页面滚动时莫名其妙的闪屏&#xff0c;其他页面不闪屏&#xff0c;可能跟新建的项目样式有关。 修改方法如下。 在pages.json中 "tabBar": {"selectedColor": "#204AFF","color": "#ccc…...

【计算机毕业设计】388微信小程序足球赛事及队伍管理系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

监控易监测对象及指标之:华为FusionInsight Kafka服务全方位监控

监控易提供对华为FusionInsight Kafka服务的全方位监控功能。该功能可以帮助用户实时监测Kafka服务的各项性能指标&#xff0c;确保服务的稳定运行和高效性能。 具体功能点包括&#xff1a; 服务状态监测&#xff1a;监控易能够实时监测华为FusionInsight Kafka服务的运行状态…...

Python装饰器的应用

Python 中的装饰器是一种语法糖&#xff0c;可以在运行时&#xff0c;动态的给函数或类添加功能。装饰器本质上是一个函数&#xff0c;使用 函数名就是可实现绑定给函数的第二个功能 。它的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。 …...

【数据结构与算法 | 基础篇】力扣232, 225

1. 力扣232 : 用栈实现队列 (1). 题 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移…...

内网(极空间)搭建gitlab跳板机转发端口及域名配置

背景说明 https://blog.csdn.net/GodDavide/article/details/139182475 上文说到: 我已经用docker搭好了gitlab-ce服务&#xff0c;但我是部署在自己的家庭nas-极空间z4pro里的&#xff0c;属于内网环境。 另外我有一台阿里云服务器&#xff0c;做跳板机。 我有一个阿里的域名…...

如何知道自己电脑的 Shell类型是什么?

在macOS中&#xff0c;你可以通过以下几种方法来确定当前正在使用的shell类型&#xff0c;并了解相关的配置文件&#xff1a; 1. 使用终端命令确定shell类型 打开终端应用程序&#xff08;Terminal&#xff09;。输入以下命令并按回车键&#xff1a;echo $SHELL。该命令会输出…...

Axios的使用简单说明

axios 请求方式和参数 axios 可以发送 ajax 请求&#xff0c;不同的方法可以发送不同的请求: axios.get&#xff1a;发送get请求 axios.post&#xff1a;发送post请求 axios.put&#xff1a;发送put请求 axios.delete&#xff1a;发送delete请求 无论哪种方法&#xff0c;第一…...

查找list集合中,持续时间>=ContinueTime的数据集合,保存在新的list中

在给定的包含时间戳的list中&#xff0c;查找连续continueNum次的且时间间隔为needDiff的集合。 eg&#xff1a;相邻两个数据的时间戳间隔为1分钟&#xff0c;且超过30分钟有数据 /**** param list 包含时间戳&#xff08;10位&#xff09;的list* param continueNum 至少持续…...

nginx 反向代理配置详解

Nginx 反向代理是一种常用的部署策略&#xff0c;用于将客户端请求转发到内部网络中的一个或多个服务器&#xff0c;这些服务器直接处理请求并返回响应给Nginx&#xff0c;再由Nginx转交给客户端。这种设置可以提高网站的可用性和安全性&#xff0c;同时也能实现负载均衡、缓存…...

微信小程序毕业设计-农场驿站平台系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…...

CAN总线应用协议CANopen

作为一种真正开放的CAN总线高层协议&#xff0c;CANopen协议允许不同的CAN设备以标准化的方式进行通讯&#xff0c;这使得CAN 设备具有互操作性。随着CANopen协议的日益完善&#xff0c;它已经广泛应用于多个行业。本文将对CANopen协议的对象字典、通讯对象、网络管理等几个方面…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

rm视觉学习1-自瞄部分

首先先感谢中南大学的开源&#xff0c;提供了很全面的思路&#xff0c;减少了很多基础性的开发研究 我看的阅读的是中南大学FYT战队开源视觉代码 链接&#xff1a;https://github.com/CSU-FYT-Vision/FYT2024_vision.git 1.框架&#xff1a; 代码框架结构&#xff1a;readme有…...

ffmpeg(三):处理原始数据命令

FFmpeg 可以直接处理原始音频和视频数据&#xff08;Raw PCM、YUV 等&#xff09;&#xff0c;常见场景包括&#xff1a; 将原始 YUV 图像编码为 H.264 视频将 PCM 音频编码为 AAC 或 MP3对原始音视频数据进行封装&#xff08;如封装为 MP4、TS&#xff09; 处理原始 YUV 视频…...

性能优化中,多面体模型基本原理

1&#xff09;多面体编译技术是一种基于多面体模型的程序分析和优化技术&#xff0c;它将程序 中的语句实例、访问关系、依赖关系和调度等信息映射到多维空间中的几何对 象&#xff0c;通过对这些几何对象进行几何操作和线性代数计算来进行程序的分析和优 化。 其中&#xff0…...

华为OD机考- 简单的自动曝光/平均像素

import java.util.Arrays; import java.util.Scanner;public class DemoTest4 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint[] arr Array…...

基于机器学习的智能故障预测系统:构建与优化

前言 在现代工业生产中&#xff0c;设备故障不仅会导致生产中断&#xff0c;还会带来巨大的经济损失。传统的故障检测方法依赖于人工巡检和定期维护&#xff0c;这种方式效率低下且难以提前预测潜在故障。随着工业物联网&#xff08;IIoT&#xff09;和机器学习技术的发展&…...

【Flask】:轻量级Python Web框架详解

什么是Flask&#xff1f; Flask是一个用Python编写的轻量级Web应用框架。它被称为"微框架"(microframework)&#xff0c;因为它核心简单但可扩展性强&#xff0c;不强制使用特定的项目结构或库。Flask由Armin Ronacher开发&#xff0c;基于Werkzeug WSGI工具包和Jin…...