【UE4 C++】查找文件 移动文件 删除文件

转载自 https://blog.csdn.net/u014532636/article/details/71726559

继承UBlueprintFunctionLibrary

.h


  
  
  1. //查找文件
  2. UFUNCTION(BlueprintCallable, Category = "ExtendedContent|File")
  3. static TArray<FString> FindFiles(FString Path, FString Filter, bool InFiles, bool InDirectory); //3true返回文件,4true返回文件夹
  4. /**移动文件位置*/
  5. UFUNCTION(BlueprintCallable, Category = " ExtendedContent |file")
  6. static bool MoveFileTo(FString To, FString From);
  7. /**删除一个文件*/
  8. UFUNCTION(BlueprintCallable, Category = " ExtendedContent |file")
  9. static bool DeleteFile(FString FilePath);

.cpp


  
  
  1. TArray<FString> ULoadTexture::FindFiles(FString Path, FString Filter, bool InFiles, bool InDirectory)
  2. {
  3. TArray<FString> FilePathList;
  4. //清空数组
  5. FilePathList.Empty();
  6. //查找文件并将结果赋给FileList
  7. FFileManagerGeneric::Get().FindFilesRecursive(FilePathList, *Path, *Filter, InFiles, InDirectory);
  8. //返回结果
  9. return FilePathList;
  10. }
  11. bool ACPassword::MoveFileTo(FString To, FString From)
  12. {
  13. return IFileManager::Get().Move(*To, *From);
  14. }
  15. bool ACPassword::DeleteFile(FString FilePath)
  16. {
  17. return IFileManager::Get().Delete(*FilePath);
  18. }


创建文件夹


  
  
  1. bool AMyActor::CreateMyDirectory( const FString& TestDir)
  2. {
  3. // Every function call, unless the function is inline, adds a small
  4. // overhead which we can avoid by creating a local variable like so.
  5. // But beware of making every function inline!
  6. IPlatformFile& PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
  7. // Directory Exists?
  8. if (!PlatformFile.DirectoryExists(*TestDir))
  9. {
  10. PlatformFile.CreateDirectory(*TestDir);
  11. return true;
  12. }
  13. else
  14. {
  15. GEngine->AddOnScreenDebugMessage( -1, 5.0f, FColor::Yellow, TEXT( "File存在!"));
  16. return false;
  17. }
  18. }


获取文件大小


  
  
  1. FString AMyActor::GetMyFileSize(FString MyFilePath)
  2. {
  3. if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*MyFilePath))
  4. {
  5. GEngine->AddOnScreenDebugMessage( -1, 5.0f, FColor::Yellow, TEXT( "Could Not Find File!"));
  6. return "0";
  7. }
  8. const int64 FileSize = FPlatformFileManager::Get().GetPlatformFile().FileSize(*MyFilePath);
  9. FString Message = FString::Printf(TEXT( "File size is: %d"), FileSize);
  10. return Message;
  11. }

写入读取TXT

.h


  
  
  1. UFUNCTION(BlueprintCallable, Category = "save")
  2. static bool FileSaveString(FString SaveTextB, FString FileNameB);
  3. UFUNCTION(BlueprintCallable, Category = "save")
  4. static bool FileLoadString(FString FileNameA, FString& SaveTextA );

.cpp


  
  
  1. bool AMyActor::FileSaveString(FString SaveTextB, FString FileNameB)
  2. {
  3. return FFileHelper::SaveStringToFile(SaveTextB, *(FPaths::GameDir() + FileNameB));
  4. }
  5. bool AMyActor::FileLoadString(FString FileNameA, FString& SaveTextA)
  6. {
  7. return FFileHelper::LoadFileToString(SaveTextA, *(FPaths::GameDir() + FileNameA));
  8. }

例:查找指定目录下的所有文件


  
  
  1. // 遍历文件夹下指定类型文件
  2. // Files 保存遍例到的所有文件
  3. // FilePath 文件夹路径 如 "D:\\MyCodes\\LearnUE4Cpp\\Source\\LearnUE4Cpp\\"
  4. // Extension 扩展名(文件类型) 如 "*.cpp"
  5. void UMyBlueprintFunctionLibrary::ScanDirectory(TArray<FString>& Files, const FString & FilePath, const FString& Extension)
  6. {
  7. FString SearchedFiles = FilePath + Extension;
  8. TArray<FString> FindedFiles;
  9. IFileManager::Get().FindFiles(FindedFiles, *SearchedFiles, true, false);
  10. FString SearchFile = "";
  11. for ( int i = 0; i < FindedFiles.Num(); i++)
  12. {
  13. SearchFile = FilePath + FindedFiles[i];
  14. Files.Add(SearchFile);
  15. GEngine->AddOnScreenDebugMessage( -1, 100, FColor::Red, SearchFile);
  16. }
  17. } //参考:http://blog.csdn.net/xi_niuniu/article/details/54428027

  
  
  1. TArray<FString> ALoadPackageMapAsyncActor::GetAllFilesInDirector( const FString directory, const FString onlyFilesStartingWith, const FString extension)
  2. {
  3. FString Directory1 = FPaths::GameDir() + directory;
  4. TArray<FString> directoriesToSkip;
  5. IPlatformFile &PlatformFile = FPlatformFileManager::Get().GetPlatformFile();
  6. FLocalTimestampDirectoryVisitor Visitor(PlatformFile, directoriesToSkip, directoriesToSkip, false);
  7. PlatformFile.IterateDirectory(*Directory1, Visitor);
  8. TArray<FString> files;
  9. for (TMap<FString, FDateTime>::TIterator TimestampIt(Visitor.FileTimes); TimestampIt; ++TimestampIt)
  10. {
  11. const FString filePath = TimestampIt.Key();
  12. const FString fileName = FPaths::GetCleanFilename(filePath);
  13. const FString fileBaseName = FPaths::GetBaseFilename(filePath);
  14. bool shouldAddFile = true;
  15. if (!onlyFilesStartingWith.IsEmpty())
  16. {
  17. const FString left = fileName.Left(onlyFilesStartingWith.Len());
  18. if (!(fileName.Left(onlyFilesStartingWith.Len()).Equals(onlyFilesStartingWith)))
  19. shouldAddFile = false;
  20. }
  21. if (!extension.IsEmpty())
  22. if (!(FPaths::GetExtension(fileName, false).Equals(extension, ESearchCase::IgnoreCase)))
  23. shouldAddFile = false;
  24. if (shouldAddFile)
  25. files.Add(filePath);
  26. }
  27. if (files.Num() == 0)
  28. {
  29. GEngine->AddOnScreenDebugMessage( -1, 15.0f, FColor::Yellow, TEXT( "no array"));
  30. }
  31. return files;
  32. } //参考:http://blog.csdn.net/u012803165/article/details/79034176




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值