MFC 对文件以及文件夹操作
来源:互联网 发布:中国移动大数据面试 编辑:程序博客网 时间:2024/05/21 09:03
/* 功能在文件夹中搜索后缀相同的文件
szFilePath 文件夹路径
strExt 要搜索的文件后缀
*/
BOOL FindIsFiles(CString szFilePath, CString strExt)
{
CFileFind finder;
BOOL bWorking = FALSE;
// bWorking = PathIsRoot(szFilePath);
// if ( PathIsRoot(szFilePath) )///判断是否是盘符
// {
// return FALSE;
// }
// bWorking = PathIsDirectory(szFilePath);
// if (PathIsDirectory(szFilePath))//判断是否是文件路径
// {
// }
if(szFilePath.GetLength()) bWorking = finder.FindFile(szFilePath + _T("\\*.*"));while(bWorking){ bWorking = finder.FindNextFile(); if (finder.IsDots()) { if((finder.GetFileName() == _T("..")) && (bWorking == FALSE)) break; continue; } if (finder.IsDirectory()) { CString str = finder.GetFilePath(); CString szFileName = finder.GetFileName(); CString strFileUp = szFileName, strExtUp = strExt; strFileUp.MakeUpper(); strExtUp.MakeUpper(); if(strFileUp.Right(strExtUp.GetLength()) == strExtUp) { return TRUE; } } else { CString str = finder.GetFilePath(); CString szFileName = finder.GetFileName(); CString strFileUp = szFileName, strExtUp = strExt; strFileUp.MakeUpper(); strExtUp.MakeUpper(); if(strFileUp.Right(strExtUp.GetLength()) == strExtUp) { return TRUE; } }}return FALSE;
}
/*
重命名所有文件,还没有实现完全
szFilePath:文件路径
szFileName:重命名的文件
*/
BOOL RenameAllFile(CString szFilePath, vector& szFileName)
{
CFileFind finder;
BOOL bWorking = FALSE;
if(szFilePath.GetLength()) bWorking = finder.FindFile(szFilePath + _T("\\*.*"));while(bWorking){ bWorking = finder.FindNextFile(); if (finder.IsDots()) { if((finder.GetFileName() == _T("..")) && (bWorking == FALSE)) break; continue; } if (finder.IsDirectory()) { CString str = finder.GetFilePath(); RenameAllFile(str, szFileName); } else { szFileName.push_back(finder.GetFileName()); }}return TRUE;
}
/*
功能:从当前文件夹szFilePath 开始查找strExt,如果查找到则把它放入vctFind中
描述:针对车型升级失败,而car.bmp又删除不掉,这个时候必须对car.bmp进行重名,
否则在读取车型时,会显示这张图片,但是点击又不能启动诊断程序。
对于其他文件,就不需要这样处理了,只需要车型文件夹重命名就可以了
参数:
szFilePath : 车型文件夹名称
strExt : car.bmp
vctFind : 存放需要重名的文件
*/
BOOL RenameCarBmp(CString szFilePath, CString strExt, vector& vctFind)
{
CFileFind finder;
BOOL bWorking = FALSE;
if(szFilePath.GetLength()) bWorking = finder.FindFile(szFilePath + _T("\\*.*"));while(bWorking){ bWorking = finder.FindNextFile(); if (finder.IsDots()) { if((finder.GetFileName() == _T("..")) && (bWorking == FALSE)) break; continue; } if (finder.IsDirectory()) { CString str = finder.GetFilePath(); RenameCarBmp(str, strExt, vctFind); } else { CString szFileName = finder.GetFileName(); CString strFileUp = szFileName, strExtUp = strExt; strFileUp.MakeUpper(); strExtUp.MakeUpper(); if(strFileUp.Right(strExtUp.GetLength()) == strExtUp) { vctFind.push_back(szFilePath+_T("\\")+szFileName); } }}return TRUE;
}
//ReNameFolder
//参数:lpszFromPath 源文件夹路径,lpszToPath 目的文件夹路径
//作用:修改原文件夹的名字
//
BOOL ReNameFiles(CString& lpszFolderPath, CString& lpszFilePrev)
{
CString strFileName = _T(“”);
BOOL bRet;int idx = 0;if (GetFileAttributes(lpszFolderPath) == -1)///zp 20161025 说明文件不存在,可以接着升级{ m_FilePath.SetFocus(); AfxMessageBox(_T("文件路径错误!!!请重新指定")); return TRUE;}if (lpszFilePrev.GetLength() <= 0)///zp 20161025 说明文件不存在,可以接着升级{ m_FilePrev.SetFocus(); AfxMessageBox(_T("请指定文件前缀!!!")); return TRUE;}vector<CString> vctGuoJia;vctGuoJia.push_back(_T("CN"));vctGuoJia.push_back(_T("DE"));vctGuoJia.push_back(_T("EN"));vctGuoJia.push_back(_T("ES"));vctGuoJia.push_back(_T("FR"));vctGuoJia.push_back(_T("HE"));vctGuoJia.push_back(_T("HK"));vctGuoJia.push_back(_T("HU"));vctGuoJia.push_back(_T("IT"));vctGuoJia.push_back(_T("JP"));vctGuoJia.push_back(_T("KR"));vctGuoJia.push_back(_T("NL"));vctGuoJia.push_back(_T("PL"));vctGuoJia.push_back(_T("PT"));vctGuoJia.push_back(_T("RU"));vctGuoJia.push_back(_T("SE"));vctGuoJia.push_back(_T("TH"));int i = 0;CString strCarName=_T("CAR.BMP");while (bRet){ strFileName + vctGuoJia.at(i++); bRet = FindIsFiles(lpszFolderPath, strCarName);///找CarName00到返回TRUE///没有找到说明文件不存在返回FALSE if (!bRet) { continue; } idx++;}vector<CString> cstrFilePath;cstrFilePath.push_back(strCarName);if (PathIsDirectory(lpszFolderPath+_T("\\"))==FILE_ATTRIBUTE_DIRECTORY)///判断输入路径是那种类型 1 文件夹 2 文件{ RenameCarBmp(lpszFolderPath, _T("car.bmp"), cstrFilePath); ///车型升级car.bmp这个地方出问题重命名图片名称}int nRet = -1;for (int i=cstrFilePath.size()-1; i >= 0 ; i--)///这个地方是重命名文件夹和{ CString NewPathFrm = _T(""); CString NewDstPathFrm = _T(""); if (0 == i)///只重命名文件夹 { NewPathFrm = lpszFolderPath; NewPathFrm +='\0';//注意必须是'\0'而不是"\0"!~!! NewDstPathFrm = lpszFolderPath+_T("\\")+cstrFilePath.at(i); lpszFolderPath = NewDstPathFrm; } else///文件夹和里面文件都进行重命名 { CString strExt = _T(""); NewPathFrm.Format(_T("0%d"), idx); strExt = cstrFilePath.at(i); strExt.Insert(strExt.ReverseFind('.'), NewPathFrm); if (strExt.Find(lpszFolderPath) == -1) { NewDstPathFrm = lpszFolderPath + _T("\\") + strExt; NewPathFrm = lpszFolderPath + _T("\\") +cstrFilePath.at(i); } else { NewDstPathFrm = strExt; NewPathFrm = cstrFilePath.at(i); } NewPathFrm +='\0';//注意必须是'\0'而不是"\0"!~!! } SHFILEOPSTRUCT FileOp; ZeroMemory((void*)&FileOp,sizeof(SHFILEOPSTRUCT)); FileOp.fFlags = FOF_NOCONFIRMATION ; FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.pFrom = NewPathFrm; FileOp.pTo = NewDstPathFrm; FileOp.wFunc = FO_RENAME; nRet = SHFileOperation(&FileOp);}return (nRet == 0);
}
- MFC 对文件以及文件夹操作
- MFC 中打开 文件,文件夹,以及删除文件,文件夹操作
- Python 对文件夹以及文件的操作
- MFC 文件,文件夹操作
- MFC 文件,文件夹操作
- MFC 文件,文件夹操作
- MFC文件、文件夹操作
- MFC 文件,文件夹操作
- MFC 文件,文件夹操作
- MFC 文件,文件夹操作
- C#中对文件以及文件夹的操作
- MFC下对文件及文件夹的操作(复制、剪切、删除、创建文件夹,写文件)
- MFC课程设计以及对xm文件的操作
- mfc 文件 文件夹操作大全
- MFC文件、文件夹操作整理
- C#操作文件以及文件夹
- MFC 获取文件夹路径以及文件路径
- MFC对文件的操作
- BZOJ 3295: [Cqoi2011]动态逆序对
- C++ 二分法查找元素及其索引
- BAE数据库链接方法整理版
- PHP 引用赋值和传递赋值
- 把表A的某列值赋给表B对应的列SQL
- MFC 对文件以及文件夹操作
- 生化危机6终章中英双字
- Auxiliary Set----DFS思维题
- Git(1)/Git简介
- Ubuntu16.04下启动eclips
- LSM内核源代码分析与测试(一)
- BZOJ 1024, 生日快乐
- Android studio使用JNI实例
- Glide-图片的压缩