获取文件扩展名、 文件名、文件名不包括扩展名,检测文件夹、文件是否存在、创建文件夹,检测文件夹状态、检查文件名是否符合要求...

本文提供了一系列用于处理文件路径的实用函数,包括获取文件完整路径、检测文件夹及文件是否存在、创建文件夹、检查文件夹权限及文件名合法性等功能。适用于Windows平台下的文件路径管理。

工作中用到了,所以自己封装了一下。没做严格检查

/// 获取文件正确路径,如果是文件夹,就加上 BOOL CCommonTool::GetFileFullDirectoryPath( CString &szPath ) { DWORD dwAttibute; dwAttibute= GetFileAttributes( szPath ); if ( dwAttibute!=0xFFFFFFFF ) { if ( (dwAttibute&FILE_ATTRIBUTE_DIRECTORY) !=0 ) { if ( szPath.Right(1)!='//' ) { szPath+="//"; } return TRUE; } } return FALSE; } /// 检测文件夹是否存在 BOOL CCommonTool::DirectoryExists(LPCTSTR lpszFileName) const { DWORD dwAttributes = GetFileAttributes(lpszFileName); if(dwAttributes == 0xFFFFFFFF) { return false; } if((dwAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) { return TRUE; } else { return FALSE; } } /// 检测文件是否存在,包括文件与文件夹 BOOL CCommonTool::FileExists(LPCTSTR lpszFileName) { DWORD dwAttributes = GetFileAttributes(lpszFileName); if(dwAttributes == 0xFFFFFFFF) { return false; } return TRUE; } /// 获取我的电脑路径 CString CCommonTool::GetSystemPath( int nAttribute /* =CSIDL_DESKTOP */ ) const { CString csSystemPath=_T(""); TCHAR szPath[MAX_PATH+1]=_T(""); #ifdef _WIN32_WCE LPITEMIDLIST ppidl=NULL; #else LPITEMIDLIST ppidl=NULL; #endif if ( SHGetSpecialFolderLocation( NULL, nAttribute, &ppidl )==S_OK ) { if ( SHGetPathFromIDList(ppidl, szPath )) { csSystemPath= szPath; } } return csSystemPath; } /* 按照指定的文件夹名顺序创建文件夹 szFileName: 如果文件已经存在,按照 szFileName(1)顺序创建 */ bool CCommonTool::CreateDirectory( CString &szFileName ) { int nIndex=1; CString szTemp= szFileName; do { if ( DirectoryExists(szTemp) ) { szTemp.Format(_T("%s(%d)"), szFileName, nIndex++); continue; } #ifdef _WIN32_WCE // 根目录创建时不要加'/' if ( szTemp.ReverseFind(_T('//'))==0 ) { szTemp= szTemp.Mid(1); } #endif szFileName= szTemp; return ( ::CreateDirectory(szFileName,NULL)>0 ); } while ( nIndex<1000 ); return false; } /// 检查文件夹操作状态 bool CCommonTool::InspectDirectoryPopedom( const CString szPath, DWORD dwFileAccess/* =GENERIC_READ|GENERIC_WRITE */ ) { #ifdef _WINDOWS_ // wince下不支持 HANDLE hDir=CreateFile(szPath, dwFileAccess, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL ); if ( hDir==INVALID_HANDLE_VALUE ) { return false; } CloseHandle(hDir); #endif return true; } /// 检查文件名是否符合要求 bool CCommonTool::InspectFileNameRule(const CString &csFileName) { // 文件名禁用字符列表 TCHAR szFILERULE[]= { '//', '/', ':', '*', '?', '/"', '<', '>', '|', '/0'}; for( DWORD i=0; i<STRLEN(szFILERULE); i++ ) { if ( csFileName.Find( szFILERULE[i])>=0 ) { return false; } } return true; }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值