UE4 文件的简单操作
1、需要的头文件
#include "PlatformFilemanager.h"
#include "FileHelper.h"
2、如何测试
为了方便,我将关于文件的操作放在了Actor类的操作中。具体操作就是,自定义一个继承Actor的类。然后给这个类添加一些方法,例如fineFile()
这样的方法,关于文件的具体操作都写在这些函数里面,然后在Actor的BeginPlay()
里面调用这些方法,运行游戏来测试。
3、操作文件
3.1 查找文件
void AFileTester::FindFlie()
{
FString filePath = FString("E:/ue4_test_file.txt");//为了方便,指定了一个绝对路径的文件
IPlatformFile& PlatformFile = //获取当前的平台文件,因为不同平台处理文件的方式不一样
FPlatformFileManager::Get().GetPlatformFile();//当然UE4已经帮我统一了接口
if (PlatformFile.FileExists(*filePath))//调用PlatformFile的方法,里面有很多方法,可以自己试一下
{
UE_LOG(LogTemp, Warning, TEXT("findFile: Find the flie successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("findFile: Not find the flie!"));
}
}
3.2 删除文件
void AFileTester::DeleteFile()
{
//具体使用都一样,只不过是调用的方法不一样而已
FString filePath = FString("E:/ue4_test_file.txt");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (PlatformFile.DeleteFile(*filePath))//这里不一样!
{
UE_LOG(LogTemp, Warning, TEXT("deleteFile: Delete the flie successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("deleteFile: Not delete the flie!"));
}
}
3.3 创建文件夹
void AFileTester::CreateDic()
{
FString filePath = FString("E:/ue4_test_dic/");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (PlatformFile.CreateDirectory(*filePath))//这里不一样!
{
UE_LOG(LogTemp, Warning, TEXT("createDic: CreateDic successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("createDic: Not CreateDic!"));
}
}
3.4 删除文件夹
void AFileTester::DeleteDic()
{
FString filePath = FString("E:/ue4_test_dic/");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (PlatformFile.DeleteDirectory(*filePath))//这里不一样!
{
UE_LOG(LogTemp, Warning, TEXT("deleteDic: DeleteDic successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("deleteDic: Not DeleteDic!"));
}
}
3.5 创建一个txt文件
创建文件有些不一样,用到的是FFileHelper
的API,参数都很好理解,最后一个参数是,创建文件的方式,是一个枚举类型,具体有如下一些:
FILEWRITE_None
FILEWRITE_NoFail
FILEWRITE_NoReplaceExisting
FILEWRITE_EvenIfReadOnly
FILEWRITE_Append
FILEWRITE_AllowRead
void AFileTester::CreateFlie()
{
FString filePath = FString("E:/ue4_test_file.txt");
FString fileContent = TEXT("This is a line of text to put in the file.\n");
FFileHelper::SaveStringToFile(
fileContent, *filePath, FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), EFileWrite::FILEWRITE_Append);
}
4、Actor文件
.h文件
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "FileTester.generated.h"
UCLASS()
class MYPROJECT2_API AFileTester : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AFileTester();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
void FindFlie();
void CreateFlie();
void DeleteFile();
void CreateDic();
void DeleteDic();
};
.cpp文件
// Fill out your copyright notice in the Description page of Project Settings.
#include "FileTester.h"
#include "PlatformFilemanager.h"
#include "FileHelper.h"
// Sets default values
AFileTester::AFileTester()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AFileTester::BeginPlay()
{
Super::BeginPlay();
CreateFlie();
}
void AFileTester::FindFlie()
{
FString fileContent = "";
FString filePath = FString("E:/ue4_test_file.txt");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (PlatformFile.FileExists(*filePath))
{
UE_LOG(LogTemp, Warning, TEXT("findFile: Find the flie successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("findFile: Not find the flie!"));
}
}
void AFileTester::CreateFlie()
{
FString fileContent = "";
FString filePath = FString("E:/ue4_test_file.txt");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
FString FileContent = TEXT("This is a line of text to put in the file.\n");
FFileHelper::SaveStringToFile(FileContent, *filePath, FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), EFileWrite::FILEWRITE_Append);
}
void AFileTester::DeleteFile()
{
FString fileContent = "";
FString filePath = FString("E:/ue4_test_file.txt");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (PlatformFile.DeleteFile(*filePath))
{
UE_LOG(LogTemp, Warning, TEXT("deleteFile: Delete the flie successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("deleteFile: Not delete the flie!"));
}
}
void AFileTester::CreateDic()
{
FString fileContent = "";
FString filePath = FString("E:/ue4_test_dic/");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (PlatformFile.CreateDirectory(*filePath))
{
UE_LOG(LogTemp, Warning, TEXT("createDic: CreateDic successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("createDic: Not CreateDic!"));
}
}
void AFileTester::DeleteDic()
{
FString fileContent = "";
FString filePath = FString("E:/ue4_test_dic/");
IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
if (PlatformFile.DeleteDirectory(*filePath))
{
UE_LOG(LogTemp, Warning, TEXT("deleteDic: DeleteDic successfully!"));
}
else
{
UE_LOG(LogTemp, Warning, TEXT("deleteDic: Not DeleteDic!"));
}
}
// Called every frame
void AFileTester::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}