前言
当从配置文件中读取路径时,需要判断文件内的路径名是否合法,如果不加以判断,当你编程的软件在其他电脑上打开后,读取的路径不合法,程序运行就会出问题。
正文
当从配置文件中读取出路径后,可以调用GetFileAttributes()函数来获取文件的属性,然后通过判断文件的属性是否是“无效属性”,是则认为是不合法路径,不是则认为是合法路径。
GetFileAttributes(__in LPCTSTR lpFileName)
参数
lpFileName文件或目录的名字,对于ANSI版本,名字不能大于MAX_PATH(260)。
返回值
如果函数成功,返回值包含文件或目录的属性(属性列表见备注)。如果函数失败,返回值是INVALID_FILE_ATTRIBUTES。
//获取目录/文件的属性
CString strRecordPath;
strRecordPath = _T("C:\\Users\\Microsoft\\Desktop\\");
PathAttributes = GetFileAttributes(strRecordPath);
//判断路径下文件是否合法
if(PathAttributes == INVALID_FILE_ATTRIBUTES) //若是无效属性
{
str.Format(_T("文件路径不合法"));
AfxMessageBox(str);
}
用户也可以通过其他返回值来判断文件/目录的属性。
值 | 意义 |
---|---|
FILE_ATTRIBUTE_ARCHIVE | right-aligned 存档文件(或目录)。 |
FILE_ATTRIBUTE_COMPRESSED | 压缩文件(或目录)。用于文件时:该文件中所有的记录都是经过压缩的;用于目录时:在该目录下新建文件或子目录时会默认进行压缩。 |
FILE_ATTRIBUTE_DEVICE | 未使用,保留 |
FILE_ATTRIBUTE_DIRECTORY | 目录 |
FILE_ATTRIBUTE_ENCRYPTED | 加密文件(或目录)。用于文件时:该文件中所有的记录都是经过加密的,包括读写操作;用于目录时:在该目录下新建文件或子目录时会默认进行加密。 |
FILE_ATTRIBUTE_HIDDEN | 隐藏文件(或目录) |
FILE_ATTRIBUTE_NORMAL | 文件(或目录)正常 |
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED | 标示一个文件不可被内容索引服务索引 |
FILE_ATTRIBUTE_OFFLINE | 脱机文件,该文件中的内容无法直接使用 |
FILE_ATTRIBUTE_READONLY | 只读文件(或目录) |
FILE_ATTRIBUTE_REPARSE_POINT | 超链接或快捷方式 |
FILE_ATTRIBUTE_SPARSE_FILE | 稀疏文件 |
FILE_ATTRIBUTE_SYSTEM | 系统文件(或目录) |
FILE_ATTRIBUTE_TEMPORARY | 临时文件 |
FILE_ATTRIBUTE_VIRTUAL | 系统文件 |