[UE4]文件的基本操作,创建、删除、寻找

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!"));
    }
}

find

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!"));
    }
}

deletefile

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!"));
    }
}

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!"));
    }
}

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);

}

  • 6
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值