vc判断文件是否存在

vc判断文件是否存在,第1张

方法一:PathFileExists(FilePath)   返回true则存在,返回false则不存在,注意要加上以下代码:

#include <shlwapi.h>

#pragma comment(lib,"Shlwapi.lib")

方法二:CFile::GetStatus(WMSIniFilePath,filestatus),返回true则存在,返回false则不存在

参数:

rStatus:

A reference to a user-supplied CFileStatus structure that will receive the status information. The CFileStatus structure has the following fields:

CTime m_ctime   The date and time the file was created.

CTime m_mtime   The date and time the file was last modified.

CTime m_atime   The date and time the file was last accessed for reading.

LONG m_size   The logical size of the file in bytes, as reported by the DIR command.

BYTE m_attribute   The attribute byte of the file.

char m_szFullName[_MAX_PATH]   The absolute filename in the Windows character set.

lpszFileName:

A string in the Windows character set that is the path to the desired file. The path can be relative or absolute, but cannot contain a network name.

参考:http://msdn.microsoft.com/zh-cn/aa270504

最近的项目是对文件 *** 作的,所以,多少都遇到一些关于文件 *** 作的问题.用到最多的还是文件打开,文件读写,判断文件存在否.本文不讨论文件读写,只针对判断文件存在否.

记得在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 findBOOL 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

(这个就是上面第一种方法)

推荐实例例:if(::GetFileAttributes(m_filename)==-1){//文件不存在}else{//文件存在}1. 使用_access函数,函数原型为 int _access( const char *path, int mode )2. 使用CreateFile函数,函数原型为: HANDLE CreateFile( LPCTSTR lpFileName, // pointer to name of the file DWORD dwDesiredAccess, // access (read-write) mode DWORD dwShareMode, // share mode LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security attributes DWORD dwCreationDisposition, // how to create DWORD dwFlagsAndAttributes, // file attributes HANDLE hTemplateFile // handle to file with attributes to // copy )3. 使用FindFirstFile函数,函数原型为: HANDLE FindFirstFile( LPCTSTR lpFileName, // pointer to name of file to search for LPWIN32_FIND_DATA lpFindFileData // pointer to returned information )4. 使用GetFileAttributes函数,函数原型如下: DWORD GetFileAttributes( LPCTSTR lpFileName // pointer to the name of a file or directory )5. 使用Shell Lightweight Utility APIs函数 PathFileExists()专门判断文件和目录时否存在的函数文件名可读性比较强还可以判断目录是否存在 Header: Declared in Shlwapi.h Import Library: Shlwapi.lib 以上的各种方法供参考,函数具体用法需参见MSDN


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11908236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存