VC++中检测文件是否存在有很多种方法,比较通用的是GetFileAttributes函数,在控制台下增加#include<windows.h>,MFC和其它窗口程序下可以直接使用:
if(GetFileAttributes(FileName)<0)//==-1{
//文件不存在!
}
else
//存在
这种方法是windows下推荐使用的,并可以用于目录(文件夹)的判断(返值为FILE_ATTRIBUTE_DIRECTORY),不稿悄会因为文件访问权限等问题造成误判。
此外还有很多判断方法,各有优势和适用范围,需要注意的是,各个方法判断的“文件存在和不存在”可能包括同名目录、用户权限、文件夹不存在或禁止访问等问题,应该根据具体需求使用适合的方法:
CFile::Open或OpenFile,悔敬神无法以读取方式打开
_access函数,通过判断文件碧亏是否能够访问,返回文件是否存在
CFileFind类或FindFirstFile函数。这个也是很不错的方法,不但能够获取比较详细的文件存在信息,还能使用递归搜索子目录。
使用Shell函数SHGetFileInfo判断文件是否存在,这个方法可以获取更完整的文件信息,不仅能判断是否存在,还能直接获取文件的shell信息,方便进一步处理。
CreateFile打开,成功当然存在,失败敬历兆再用GetLastError看原因,根据失败原因亮租判断文烂答件是否存在。另外,CFileFind应该没什么问题。可参考:
CFileFind finder
BOOL bWorking = finder.FindFile(_T("*.*"))
while (bWorking)
{
bWorking = finder.FindNextFile()
TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName())
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)