UE4 读取ini文件 小记

阅读: 评论:0

UE4 读取ini文件 小记

UE4 读取ini文件 小记

UE4 读取非config目录的ini配置时的注意事项

当我们把一些自定义的ini文件放在类似content下的目录时,在对它进行读取的时候,会跳转到
获取String的位置,如下

bool FConfigCacheIni::GetString( const TCHAR* Section, const TCHAR* Key, FString& Value, const FString& Filename )
{FRemoteConfig::Get()->FinishRead(*Filename); // Ensure the remote file has been loaded and processedFConfigFile* File = Find( Filename, 0 );if( !File ){return false;}............return true;
}

然后在FConfigFile* File = Find( Filename, 0 );的位置,会通过文件名获取ConfigFile的指针,如下

FConfigFile* FConfigCacheIni::Find( const FString& Filename, bool CreateIfNotFound )
{	// check for non-filenamesif(Filename.Len() == 0){return nullptr;}// Get file.FConfigFile* Result = TMap<FString,FConfigFile>::Find( Filename );// this is || filesize so we load up .int files if file IO is allowedif( !Result && !bAreFileOperationsDisabled && (CreateIfNotFound || DoesConfigFileExistWrapper(*Filename) ) ){Result = &Add( Filename, FConfigFile() );Result->Read( Filename );UE_LOG(LogConfig, Verbose, TEXT( "GConfig::Find has loaded file:  %s" ), *Filename );}return Result;
}

问题就在if( !Result && !bAreFileOperationsDisabled && (CreateIfNotFound || DoesConfigFileExistWrapper(*Filename) ) )这一句上,其中bAreFileOperationsDisabled禁止文件操纵的这个变量必须为false,这时候才能进入该if语句,去对该文件的对象进行创建和引用,但是有些时候我们在保存配置文件时候,为了强制写入,会有如下操作:

	SaveConfig(CPF_Config, *FileName);GConfig->EnableFileOperations();GConfig->Flush(false, FileName);GConfig->DisableFileOperations();

这里就完美的把文件操作禁止掉了。所有该位置应该修改为

	SaveConfig(CPF_Config, *FileName);if (GConfig->AreFileOperationsDisabled()){//如果初始不允许文件操作,则先打开,保存后再关掉GConfig->EnableFileOperations();GConfig->Flush(false, FileName); //强行存储。GConfig->DisableFileOperations();}else{GConfig->Flush(false, FileName);}

然后在读取自定义的文件之前,先进行一些判定

	bool bConfigOperationsDisabled = GConfig->AreFileOperationsDisabled();if (bConfigOperationsDisabled){GConfig->EnableFileOperations();}//文件读取操作......//文件读取操作结束if (bConfigOperationsDisabled){GConfig->DisableFileOperations();}

这样就完美的解决了在某些异常情况下,自定义ini文件无法读取的问题。

本文发布于:2024-01-28 03:03:06,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063821944310.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:小记   文件   ini
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23