如何找出path是否指定了实际的文件?

我有一个function如下:

DWORD stats = GetFileAttributesA(path); return (stats != INVALID_FILE_ATTRIBUTES) && !(stats & FILE_ATTRIBUTE_DIRECTORY) ? 1 : 0; 

问题是SQL连接string:“Driver = {SQL Server Native Client 10.0}; server = localhost; database = NorthWindDB; Trusted_Connection = yes;” 不知何故是有效的。 它返回32(当给定input时的状态是32),这是FILE_ATTRIBUTE_ARCHIVE的值。 我不能过滤掉,因为其他合法的文件也返回该值。

如何确定值是否指定文件或连接string?

更新:PathFileExists也不工作

Solutions Collecting From Web of "如何找出path是否指定了实际的文件?"

因为所有其他的似乎失败了,这是一个完全不同的方法:尝试system("dir \"path_to_check\"")并检查其返回值(在我的机器上工作:)另请参阅system() 。

如何FindFirstFile或FindFirstFileEx ?

在目录中搜索名称与特定名称匹配的文件或子目录(如果使用通配符,则使用部分名称)。

如果函数失败或未能从lpFileName参数中的搜索字符串中查找文件,则返回值为INVALID_HANDLE_VALUE。

我认为它可以用来判断一个给定的字符串是否表示一个真实的文件。

很多与我如何验证文件或文件夹路径的相似之处? ,他们也提到BOOST文件系统 ,但我没有经验,…

此代码:

 #include <windows.h> #include <iostream> using namespace std; int main() { DWORD stats = GetFileAttributesA( "Driver={SQL server Native Client 10.0};server=localhost;database=NorthWindDB;Trusted_Connection=yes;" ); cout << stats << endl; } 

打印4294967295 – 这是INVALID_FILE_ATTRIBUTES。 它在你的系统上做了什么?

也许函数像GetFullPathName可以帮助你区分文件和连接字符串? (尚未测试)

SHLWAPI还提供了一组路径函数,可以用来规范路径或验证路径是否有效。