MFC或C/C++中如何判断目录存在,文件/文件夹存在,亦或是文件夹存在( 三 )

<< std::endl;}if (S_IFDIR & buff.st_mode){//文件夹存在std::cout << "stat:" << cPath << "文件夹查找成功" << std::endl;std::cout << std::endl;}}}
三、 头文件
#include #pragma comment(lib,"Shlwapi.lib") //如果没有这行,会出现link错误
功能
该函数可以检测文件或目录是否存在!
原型
BOOL PathFileExists ( __in LPCTSTR pszPath );//Parameters参数pszPath[in] 类型:LPCTSTR,需要判断的文件或文件夹名//存在该文件,则返回TRUE,相反,返回FALSE.
举例
if (PathFileExists(strPath)){//文件或文件夹存在std::cout << "PathFileExists:" << "文件或文件夹查找成功" << std::endl;std::cout << std::endl;}
四、 功能
获取指定文件的状态信息
参数
要获取状态信息的结构的引用 。结构具有下列字段:
CTime文件创建日期和时间 。
CTime文件的上次更新的日期和时间 。
CTime文件用于读取最后访问的日期和时间 。
文件的逻辑大小(以字节为单位),如报告DIR命令 。
BYTE文件的属性字节 。
char [] 在字符集的绝对文件名 。
在路径所需文件的字符集的字符串 。路径可以是相对路径或绝对的,也可以包含网络路径名 。
pTM 为er对象的指针
返回值
如果指定的文件的状态信息成功获取,返回TRUE; 否则,FALSE 。
说明
的非静态版本检索打开文件的状态信息与特定 CFile 对象 。的静态版本获取从特定文件路径的文件状态,而不会实际打开文件 。这将用于测试文件是否存在以及访问权限很有用 。
结构的成员引用设置的文件属性 。CFile 选件类提供枚举类型,因此文件属性可以指定标记:
enum Attribute {normal = 0x00,readOnly = 0x01,hidden = 0x02,system = 0x04,volume = 0x08,directory = 0x10,archive = 0x20};
原型
BOOL GetStatus( CFileStatus& rStatus) const; static BOOL PASCAL GetStatus( LPCTSTR lpszFileName, CFileStatus& rStatus, CAtlTransactionManager* pTM = NULL );
例子

MFC或C/C++中如何判断目录存在,文件/文件夹存在,亦或是文件夹存在

文章插图
CFileStatus FileStatus;BOOL bFileExists = CFile::GetStatus(strPath, FileStatus);if (bFileExists){//文件或文件夹存在std::cout << "CFileStatus:" << "文件或文件夹查找成功" << std::endl;std::cout << std::endl;}
五、 头文件
.h
或者
io.h
功能
( )函数:用于文件读取,判断文件是否存在,并判断文件是否可写 。Linux中,函数为();标准C++中,该函数为,两者的使用方法基本相同
原型
access(const char *pathname, int mode);//位于中int _access(const char *pathname, int mode);//位于
为文件路径或目录路径 mode 为访问权限
如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1.
mode的值和含义如下所示:
00——只检查文件是否存在
02——写权限
04——读权限
06——读写权限
例子
nRet = _access(cPath, S_OK);if (0 == nRet){//文件或者文件夹存在std::cout << "_access:" << cPath << "文件或文件夹查找成功" << std::endl;std::cout << std::endl;}
整体测试代码
void CIsFileExistDlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码CString strPath = _T("D:\\DemoTest\\IsFileExist\\IsFileExist");//方法一:CFileFindCFileFind fFile;BOOL bRet = fFile.FindFile(strPath);if (bRet){std::cout