VC++下对于文件目录操作的一些常用方法
1.判断文件夹是否存在
- // 判断文件夹是否存在
- BOOL CMyFun::IsDirExist(const CString& csDir)
- {
- DWORD dwAttrib = GetFileAttributes(csDir);
- return INVALID_FILE_ATTRIBUTES != dwAttrib && 0 != (dwAttrib & FILE_ATTRIBUTE_DIRECTORY);
- }
复制代码 2.取得程序当前目录
- /**
- * 取得当前目录
- */
- CString CMyFun::GetCurDirectory()
- {
- TCHAR szPath[MAX_PATH]; //存放路径的变量
- GetCurrentDirectory(MAX_PATH, szPath); //获取程序的当前目录
- CString strtemp = (CString)szPath;
- return strtemp;
- }
复制代码 3.根据文件名全路径,取得文件目录路径( 包含"/"),不包含文件名
- /**
- * 取得文件路径( 包含"/")
- */
- CString CMyFun::GetFolderPathFromFullPath(CString lpszFullPath)
- {
- ASSERT(!lpszFullPath.IsEmpty());
- // 获取文件路径:
- // 注意不是“/”以结尾,因为使用过程中加上一个“/”容易,减去一个不容易
- CString m_strOriFileName = lpszFullPath;
- //m_strOriFileName.Replace(_T("\"), _T("/"));
-
- CString strPath;
- int n = m_strOriFileName.ReverseFind('\\') + 1;
- strPath = m_strOriFileName.Left(n);
- return strPath;
- }
复制代码 4.从文件名中获取路径名(文件不在根目录下时取得的值后有“\”,在根目录时一样,都是盘符,例如“C:\”)
- CString CMyFun::ExtractFilePath(CString lpszFullPath)
- {
- ASSERT(!lpszFullPath.IsEmpty());
- CString m_strOriFileName = lpszFullPath;
- //m_strOriFileName.Replace(_T("\"), _T("/"));
- //判断有没有文件名
- CString strFilePath;
- //判断有没有文件名(后辍)
- CString str = GetFileExtNameFromFullPath(m_strOriFileName);
- if (str == _T(""))//没有后辍名
- {
- //判断最后一位是否为/
- if (m_strOriFileName.Right(1) == _T("/") || m_strOriFileName.Right(1) == _T("\")) {
- strFilePath = m_strOriFileName;
- }
- else//补加一个/
- {
- strFilePath = m_strOriFileName + _T("\");
- }
- }
- else
- {
- strFilePath = GetFolderPathFromFullPath(m_strOriFileName);
- }
-
- return strFilePath;
- }
复制代码5.取得第一级目录(全路径下) 比如:C:\Program Files (x86)\Common Files\Adobe\Adobe PCD\cache\cache.exe,通过此方法后,返回C:\Program Files (x86)\,代码如下: - //取得第一级目录(全路径下)
- CString CMyFun::GetFirstFolderFromFullPath(CString strPath)
- {
- CString strResult;
- int ipos1 = strPath.Find(_T("\"));
- if (ipos1 > 0) {
- int ipos2 = strPath.Find(_T("\"), ipos1 + 1);
- if (ipos2>0)
- strResult = strPath.Left(ipos2 + 1);
- }
- return strResult;
- }
复制代码
|