UE4 C++ 文件操作

UE4 C++ 文件操作

文章主要是讲一些关于虚幻4中对于文件的一些操作,因为我还是一名UE4的学徒所以文章有什么错误欢迎留言指正,文章会持续更新。

创建文件夹

源码

/** Creates a directory. */
virtual bool MakeDirectory( const TCHAR* Path, bool Tree=0 )=0;

使用

//CurrentDirectory 新文件夹的目录
//NewFolderName 新文件夹名
FString NewFolderPath = FPaths::Combine(CurrentDirectory, NewFolderName);

bool bResult = IFileManager::Get().MakeDirectory(*NewFolderPath);

查找文件

源码

/** Finds file or directories. */
virtual void FindFiles( TArray<FString>& FileNames, const TCHAR* Filename, bool Files, bool Directories)=0;

/**
 * Finds all the files within the given directory, with optional file extension filter.
 *
 * @param Directory, the absolute path to the directory to search. Ex: "C:\UE4\Pictures"
 *
 * @param FileExtension, If FileExtension is NULL, or an empty string "" then all files are found.
 * 			Otherwise FileExtension can be of the form .EXT or just EXT and only files with that extension will be returned.
 *
 * @return FoundFiles, All the files that matched the optional FileExtension filter, or all files if none was specified.
 */
virtual void FindFiles(TArray<FString>& FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension = nullptr) = 0;

/** Finds file or directories recursively. */
virtual void FindFilesRecursive( TArray<FString>& FileNames, const TCHAR* StartDirectory, const TCHAR* Filename, bool Files, bool Directories, bool bClearFileNames=true) = 0; // utility

使用

//两个bool值,第一个查找文件,第二个查找文件夹
//目录路径,查找文件夹需要添加通配符"*"
FString DirectoryPath = FPaths::Combine(CurrentDirectory, TEXT("*"));

TArray<FString> FileNames;

IFileManager::Get().FindFiles(FileNames, *DirectoryPath, false, true);
//查找目录下所有指定扩展名的文件
FString Extension = TEXT("*.json");

TArray<FString> FileNames;

IFileManager::Get().FindFiles(FileNames, *DirectoryPath, *Extension);
//递归查找文件(包括子文件夹)
//三个bool值,第一个查找文件,第二个查找文件夹,第三个完整的文件名(带扩展名)
FString Extension = TEXT("*.dat");

TArray<FString> FindedFiles;

IFileManager::Get().FindFilesRecursive(FindedFiles, *DirectoryPath, *Extension, true, false, true);

写入文件

源码

/**
 * Write the FString to a file.
 * Supports all combination of ANSI/Unicode files and platforms.
 */
static bool SaveStringToFile( const FString& String, const TCHAR* Filename, EEncodingOptions EncodingOptions = EEncodingOptions::AutoDetect, IFileManager* FileManager = &IFileManager::Get(), uint32 WriteFlags = 0 );

/**
 * Write the FString to a file.
 * Supports all combination of ANSI/Unicode files and platforms.
 */
static bool SaveStringArrayToFile( const TArray<FString>& Lines, const TCHAR* Filename, EEncodingOptions EncodingOptions = EEncodingOptions::AutoDetect, IFileManager* FileManager = &IFileManager::Get(), uint32 WriteFlags = 0 );

使用

//需要完整的文件路径
FString FilePath = FPaths::Combine(FolderPath, TEXT("123.json"));

bool bResult = FFileHelper::SaveStringToFile(WriteContent, *FilePath);

return bResult;

复制文件

源码

/** Copies a file. */
virtual uint32 Copy( const TCHAR* Dest, const TCHAR* Src, bool Replace=1, bool EvenIfReadOnly=0, bool Attributes=0, FCopyProgress* Progress = nullptr, EFileRead ReadFlags=FILEREAD_None, EFileWrite WriteFlags=FILEWRITE_None)=0; // utility

使用

//需要传入完整目标文件路径(带扩展名)
IFileManager::Get().Copy(*TargetFilePath, *SourceFilePath);

移动文件

源码

/** Moves/renames a file. */
virtual bool Move( const TCHAR* Dest, const TCHAR* Src, bool Replace=1, bool EvenIfReadOnly=0, bool Attributes=0, bool bDoNotRetryOrError=0 )=0;

使用

//需要传入完整目标文件路径(带扩展名)
bool bResult = IFileManager::Get().Move(*TargetFilePath, *SourceFilePath);
return bResult;

删除文件

源码

/** Deletes a file. */
virtual bool Delete( const TCHAR* Filename, bool RequireExists=0, bool EvenReadOnly=0, bool Quiet=0 )=0;

使用

//需要传入完整目标文件路径(带文件扩展名)
bool bResult = IFileManager::Get().Delete(*FilePath);

return bResult;

删除文件夹

源码

/** Deletes a directory. */
virtual bool DeleteDirectory( const TCHAR* Path, bool RequireExists=0, bool Tree=0 )=0;

使用

//需要删除子文件夹,最后一个参数为TRUE
bool bResult = IFileManager::Get().DeleteDirectory(*FolderPath, false, true);

return bResult;
  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值