怎样判断一个文件存在(vc)
展开全部
最近的项目是对文件操作的,所以,多少都遇到一些关于文件操作的问题.用到最多的还是文件打开,文件读写,判断文件存在否.本文不讨论文件读写,只针对判断文件存在否.
记得在C#里,有一个东西,叫做CFile.通过它的方法CFile.Exit(Filename)就可以直接判断文件是否存在,可是在VC里没有这个方法.
最开始时,我是通过定义一个文件变量,然后打开一个那个要判断的文件,如果返回0,就表示这个文件不存在.这种方法需要两步,第一步,先定义一个文件类的变量,第二步,用这个变量直接打开一个文件,查看其返回值,如果为0,就表示不存在.这种方法也还是比较简单的,不过这样会浪费一些资源,而且,如果这个文件存在,那还要在判断完后关闭文件,如果不关闭,可能就会出问题.在VC里,有好几个文件类,看你喜欢哪种就用哪种了.我使用的方法代码如下:
CStdioFile fileTemp2;
if ((fileTemp2.Open(FileName,CFile::modeRead)==0))
{ //如果这个文件不存在时
MessageBox(_T("你选择的文件不存在,请重新选择!"));}后来又发现了另一个方法
GetFileAttributes
,可以直接判断文件是否存在,而不用定义变量等,方法如下:
if(GetFileAttributes("C://Test.bmp") == -1){MessageBox(NULL,_T("文件不存在!"),_T("系统错误"),MB_ICONERROR);}这个方法很好用,建议使用.
当然还在其它的方法,我也没试用,因为,好东西有一个就可以了,不过,如果以上的方法不能满足你的要求时,还是可以试下以下的方法(我没有测试,网上找):
<1: CFileFind find;BOOL IsFinded = find.FindFile("C://Test.bmp");
if(IsFinded){//存在}
else{//不存在}
用CFileFind类的FindFile()和FindNextFile函数进行查找,如果搜索完
C:/还未找到,就是文件不存在.函数具体用法请参考msdn
<2: 1、BOOL PathFileExists(LPCTSTR lpszPath); SHELL API
2、DWORD GetFileAttributes(LPCTSTR lpFileName); API
<3: 1.CFileFind f;
(这个就是上面第一种方法)
记得在C#里,有一个东西,叫做CFile.通过它的方法CFile.Exit(Filename)就可以直接判断文件是否存在,可是在VC里没有这个方法.
最开始时,我是通过定义一个文件变量,然后打开一个那个要判断的文件,如果返回0,就表示这个文件不存在.这种方法需要两步,第一步,先定义一个文件类的变量,第二步,用这个变量直接打开一个文件,查看其返回值,如果为0,就表示不存在.这种方法也还是比较简单的,不过这样会浪费一些资源,而且,如果这个文件存在,那还要在判断完后关闭文件,如果不关闭,可能就会出问题.在VC里,有好几个文件类,看你喜欢哪种就用哪种了.我使用的方法代码如下:
CStdioFile fileTemp2;
if ((fileTemp2.Open(FileName,CFile::modeRead)==0))
{ //如果这个文件不存在时
MessageBox(_T("你选择的文件不存在,请重新选择!"));}后来又发现了另一个方法
GetFileAttributes
,可以直接判断文件是否存在,而不用定义变量等,方法如下:
if(GetFileAttributes("C://Test.bmp") == -1){MessageBox(NULL,_T("文件不存在!"),_T("系统错误"),MB_ICONERROR);}这个方法很好用,建议使用.
当然还在其它的方法,我也没试用,因为,好东西有一个就可以了,不过,如果以上的方法不能满足你的要求时,还是可以试下以下的方法(我没有测试,网上找):
<1: CFileFind find;BOOL IsFinded = find.FindFile("C://Test.bmp");
if(IsFinded){//存在}
else{//不存在}
用CFileFind类的FindFile()和FindNextFile函数进行查找,如果搜索完
C:/还未找到,就是文件不存在.函数具体用法请参考msdn
<2: 1、BOOL PathFileExists(LPCTSTR lpszPath); SHELL API
2、DWORD GetFileAttributes(LPCTSTR lpFileName); API
<3: 1.CFileFind f;
(这个就是上面第一种方法)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询