在Windows C应用程序中,我想验证传递给函数的参数,以确保指定的路径存在.*
如何在C中检查Windows上是否存在目录?
*我知道你可以进入竞争条件,在你检查存在的时间和使用它不再存在的路径的时间之间,但我可以处理.
当权限发挥作用时,明确知道目录是否存在可能会变得棘手.在尝试确定目录是否存在时,该进程可能无权访问目录或父目录.这可以满足我的需求.如果目录不存在或者我无法访问它,则在我的应用程序中都将两者视为无效路径故障,因此我不需要区分.如果您的解决方案提供此区别,则(虚拟)奖励积分.
C语言,C运行时库或Win32 API中的任何解决方案都很好,但理想情况下我想坚持常用的库(例如kernel32,user32等)并避免涉及加载非标准库的解决方案(如Shlwapi.dll中的PathFileExists).如果您的解决方案是跨平台的,那么(虚拟)奖励积分.
可能重复:
我们如何使用Win32程序检查文件是否存在?
检查文件存在的最佳方法是:
选项1:
GetFileAttributes("C:\\MyFile.txt"); // from winbase.h
if(0xffffffff == GetFileAttributes("C:\\MyFile.txt"))
{
//File not found
}
Run Code Online (Sandbox Code Playgroud)
选项2:
std::string fileName("C:\\MyFile.txt" );
ifstream fin( fileName.c_str() );
if( fin.fail() )
{
//File not found
}
Run Code Online (Sandbox Code Playgroud)
另外如果您认为选项1是更好的方法,您能告诉我如何定义0xffffffff为常量(我不想使用#define)
谢谢