如何确定路径是否指定了实际的文件
How do I find out if a path specifies an actual file?
我有一个函数如下:
DWORD stats = GetFileAttributesA(path);
return (stats != INVALID_FILE_ATTRIBUTES) && !(stats & FILE_ATTRIBUTE_DIRECTORY) ? 1 : 0;
问题是SQL连接字符串:"Driver={SQL Server Native Client 10.0}; Server =localhost;database=NorthWindDB;Trusted_Connection=yes;"在某种程度上是有效的。它返回FILE_ATTRIBUTE_ARCHIVE值32(给出输入时stats为32)。我无法将其过滤掉,因为其他合法文件也返回该值。
如何确定该值是指定文件还是连接字符串?
更新:PathFileExists不工作
由于所有其他方法似乎都失败了,这里有一个完全不同的方法:尝试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还提供了一组路径函数,可用于规范化路径或验证路径是否有效。
相关文章:
- 如何确定我已使用非编码文件到达 EOF?
- 如何在C++中确定文本文件中的元素是字符还是数字
- 我能确定从文件中读取的 32 字节二进制数据等于 256 位吗?
- 如何确定要包含哪些头文件?
- 在 Win32 应用中,如果未选择文件夹并且用户单击"确定",则文件夹选择对话框将关闭
- 您如何确定 MySQLCPPConn 库文件的位置?
- 如何确定文件或文件夹是在SSD还是硬盘驱动器上?
- 确定文件句柄是否为管道句柄
- 关于使用ifstream在C 中确定文件是否存在的问题
- 如何确定 SQLite 文件在 QML LocalStorage 中的存储位置
- 打开文件,如果不存在,则创建,确定是否创建
- 我可以定义一个(键入的)常数,该常数确定不占据可执行文件中的空间
- 如何使用 Linux API for C 确定文件系统类型(名称)?
- 通过多线程处理确定每个字符在文件中出现的次数
- 如何确定输入文件中的一行是否是最后一行?C++
- 如何确定具有文件路径的字符串中是否有任何非 ASCII 字符
- 使用 curl 下载文件时确定扩展名
- 函数调用者如何使用头文件来确定如何处理已编译的二进制文件
- 在将数据写入文件之前确定数据的大小
- 如何从项目文件夹确定团队项目Uri