我使用以下内容搜索定义为宏DB_CONFIG_FILE_PATH_1的文件。
wchar_t filename[100];
SearchPath( L".\\", DB_CONFIG_FILE_PATH_1, NULL, 100, filename, NULL);
如果文件位于C:\目录中,则找到该文件。但是,如果文件位于其子目录之一,则该函数找不到它。
有些人可以解释如何搜索所有驱动器,包括具有上述功能的文件的子目录。
我没有使用FindFirstFile函数,因为即使函数返回文件的句柄,我也无法检索文件的路径。
要说它,我想要一个文件的完整路径名。我知道文件的名称,但不知道它在comp上的位置。
答案 0 :(得分:1)
要在Win32上搜索本机代码中的子目录,您需要自己使用FindFirstFile,然后再递归到子目录。
FindFirstFile的返回值不是文件句柄 - 文件信息包含在返回的WIN32_FIND_DATA结构中。句柄用于调用FindNextFile以继续搜索。要在搜索过程中获取完整路径名,您需要跟踪当前所在的目录,并将发现的目录名称附加到路径中。
SearchPath仅搜索PATH环境变量或第一个参数(如果存在),不搜索子目录。
答案 1 :(得分:0)
GetCurrentDirectory()
应该告诉你路径:
http://msdn.microsoft.com/en-us/library/aa364934(VS.85).aspx
和FindFirstFile()
的第二个参数:
http://msdn.microsoft.com/en-us/library/aa364418(VS.85).aspx
这是一个WIN32_FIND_DATA
结构应该告诉你文件的名称:
http://msdn.microsoft.com/en-us/library/aa365740(VS.85).aspx