如何检查给定路径是否指向现有文件OR目录?

时间:2012-12-12 14:57:34

标签: c++ file winapi path directory

如果在给定路径中有实体,无论是文件还是目录,我都需要一个只返回bool的函数。在winapi或stl中使用什么功能?

2 个答案:

答案 0 :(得分:3)

GetFileAttributes()将返回有关文件系统对象的信息,可以查询该对象以确定它是文件还是目录,如果它不存在则会失败。

例如:

#include <windows.h>
#include <iostream>

int main(int argc, char* argv[])
{
    if (2 == argc)
    {
        const DWORD attributes = GetFileAttributes(argv[1]);
        if (INVALID_FILE_ATTRIBUTES != attributes)
        {
            std::cout << argv[1] << " exists.\n";
        }
        else if (ERROR_FILE_NOT_FOUND == GetLastError())
        {
            std::cerr << argv[1] << " does not exist\n";
        }
        else
        {
            std::cerr << "Failed to query "
                      << argv[1] 
                      << " : "
                      << GetLastError()
                      << "\n";
        }

    }
    return 0;
}

答案 1 :(得分:1)

PathFileExists(shlwapi)

  

确定文件系统对象(如文件或文件)的路径   文件夹有效。

(UNC股票的警告)