1、MFC所有的文件操作1.创建文件夹CreateDirectory(%1,NULL);2.创建文件CFile file;file.Open(%1,CFile:modeCreate|CFile:modeWrite);3.删除文件DeleteFile(%1);4.删除文件夹RemoveDirectory(%1);5.删除一个目录下所有的文件夹CFileFind finder;CString path;path.Format(%s*.*,%1);BOOL bWorking = finder.FindFile(path);while (bWorking) bWorking = finder.FindNe
2、xtFile(); if (finder.IsDirectory() RemoveDirectory(finder.GetFilePath(); 6.清空文件夹RemoveDirectory(%1);CreateDirectory(%1,NULL);7.读取文件char sRead5120;CFile mFile(_T(%1),CFile:modeRead);while (sRead!=NULL) mFile.Read(sRead,5120); CString %2(sRead); %3mFile.Close();8.写入文件CFile mFile(_T(%1), CFile:modeWrit
3、e|CFile:modeCreate);mFile.Write(%2,sizeof(%2);mFile.Flush();mFile.Close();9.写入随机文件char szTempPath_MAX_PATH,szTempfile_MAX_PATH;GetTempPath(_MAX_PATH, szTempPath);GetTempFileName(szTempPath,_T (my_),0,szTempfile);CFile m_tempFile(szTempfile,CFile: modeCreate|CFile: modeWrite);char m_char=a;m_tempFile
4、.Write(&m_char,2);m_tempFile.Close();/循环写入多个值strTempA;int i;int nCount=6;/共有6个文件名需要保存for (i=0;istrTemp.Format(%d,i);strTempA=文件名;/文件名可以从数组,列表框等处取得.:WritePrivateProfileString(UseFileName,FileName+strTemp,strTempA,c:usefileusefile.ini);strTemp.Format(%d,nCount);:WritePrivateProfileString(FileCount,Cou
5、nt,strTemp,c:usefileusefile.ini);/将文件总数写入,以便读出./读出nCount=:GetPrivateProfileInt(FileCount,Count,0,c:usefileusefile.ini);for(i=0;istrTemp.Format(%d,i);strTemp=FileName+strTemp;:GetPrivateProfileString(CurrentIni,strTemp,default.fil, strTempA.GetBuffer(MAX_PATH),MAX_PATH,c:usefileusefile.ini);/使用strTem
6、pA中的内容.10.读取文件属性DWORD dwAttrs = GetFileAttributes(%1);if(dwAttrs & FILE_ATTRIBUTE_READONLY) %2 if(dwAttrs & FILE_ATTRIBUTE_NORMAL) %3 11.写入属性SetFileAttributes(%1,dwAttrs | FILE_ATTRIBUTE_READONLY); 12.枚举一个目录下所有文件夹CFileFind finder;CString path;path.Format(%s*.*,%1);BOOL bWorking = finder.FindFile(pat
7、h);while (bWorking) bWorking = finder.FindNextFile(); if(finder.IsDirectory() CString %1=finder.GetFilePath(); %2 13.复制文件夹WIN32_FIND_DATA FileData;HANDLE hSearch;DWORD dwAttrs;char szDirPath = %2;char szNewPathMAX_PATH;char szHomeMAX_PATH;BOOL fFinished = FALSE;if (!CreateDirectory(szDirPath, NULL)
8、/不能创建新的目录 return;CString path;path.Format(%s*.*,%1);hSearch = FindFirstFile(path, &FileData);if (hSearch = INVALID_HANDLE_VALUE) return;while (!fFinished) lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE) dwAttrs = GetFileAttrib
9、utes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY) SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); else /不能复制文件 return; if (!FindNextFile(hSearch, &FileData) if (GetLastError() = ERROR_NO_MORE_FILES) /遍历文件夹完成 fFinished = TRUE; else /找不到下一个文件 return; FindClose(hSearch
10、);14.复制一个目录下所有的文件夹到另一个文件夹下WIN32_FIND_DATA FileData;HANDLE hSearch;DWORD dwAttrs;char szDirPath = %2;char szNewPathMAX_PATH;char szHomeMAX_PATH;BOOL fFinished = FALSE;if (!CreateDirectory(szDirPath,NULL) /不能创建新的目录 return;CString path;path.Format(%s*.*,%1);BOOL bWorking = finder.FindFile(path);while (
11、bWorking) bWorking = finder.FindNextFile(); if(finder.IsDirectory() hSearch = FindFirstFile(finder.GetFilePath()+*.*, &FileData); if (hSearch = INVALID_HANDLE_VALUE) return; while (!fFinished) lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szN
12、ewPath, FALSE) dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY) SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); else /不能复制文件 return; if (!FindNextFile(hSearch, &FileData) if (GetLastError() = ERROR_NO_MORE_FILES) /遍历文件夹完成 fFinished = TRUE; el
13、se /找不到下一个文件 return; FindClose(hSearch); 15.移动文件夹WIN32_FIND_DATA FileData;HANDLE hSearch;DWORD dwAttrs;char szDirPath = %2;char szNewPathMAX_PATH;char szHomeMAX_PATH;BOOL fFinished = FALSE;if (!CreateDirectory(szDirPath, NULL) /不能创建新的目录 return;CString path;path.Format(%s*.*,%1);hSearch = FindFirstFi
14、le(path, &FileData);if (hSearch = INVALID_HANDLE_VALUE) return;while (!fFinished) lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE) dwAttrs = GetFileAttributes(FileData.cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY) SetFil
15、eAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); else /不能复制文件 return; if (!FindNextFile(hSearch, &FileData) if (GetLastError() = ERROR_NO_MORE_FILES) /遍历文件夹完成 fFinished = TRUE; else /找不到下一个文件 return; FindClose(hSearch);RemoveDirectory(%1); 16.移动一个文件夹下所有的文件夹到另一个目录下WIN32_FIND_DATA FileData;H
16、ANDLE hSearch;DWORD dwAttrs;char szDirPath = %2;char szNewPathMAX_PATH;char szHomeMAX_PATH;BOOL fFinished = FALSE;if (!CreateDirectory(szDirPath,NULL) /不能创建新的目录 return;CString path;path.Format(%s*.*,%1);BOOL bWorking = finder.FindFile(path);while (bWorking) bWorking = finder.FindNextFile(); if(finde
17、r.IsDirectory() hSearch = FindFirstFile(finder.GetFilePath()+*.*, &FileData); if (hSearch = INVALID_HANDLE_VALUE) return; while (!fFinished) lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); if (CopyFile(FileData.cFileName, szNewPath, FALSE) dwAttrs = GetFileAttributes(FileData.
18、cFileName); if (!(dwAttrs & FILE_ATTRIBUTE_READONLY) SetFileAttributes(szNewPath, dwAttrs | FILE_ATTRIBUTE_READONLY); else /不能复制文件 return; if (!FindNextFile(hSearch, &FileData) if (GetLastError() = ERROR_NO_MORE_FILES) /遍历文件夹完成 fFinished = TRUE; else /找不到下一个文件 return; FindClose(hSearch); RemoveDirec
19、tory(finder.GetFilePath().GetBuffer(0); 17.以一个文件夹的框架在另一个目录创建文件夹和空文件WIN32_FIND_DATA FileData;HANDLE hSearch;DWORD dwAttrs;char szDirPath = %2;char szNewPathMAX_PATH;char szHomeMAX_PATH;BOOL fFinished = FALSE;if (!CreateDirectory(szDirPath, NULL) /不能创建新的目录 return;CString path;path.Format(%s*.*,%1);hSe
20、arch = FindFirstFile(path, &FileData);if (hSearch = INVALID_HANDLE_VALUE) return;while (!fFinished) lstrcpy(szNewPath, szDirPath); lstrcat(szNewPath, FileData.cFileName); HANDLE hFile=CreateFileHandle hFile=CreateFile(szNewPath,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FI
21、LE_FLAG_SEQUENTIAL_SCAN,NULL); if(!hFile) /不能创建文件 return; if (!FindNextFile(hSearch, &FileData) if (GetLastError() = ERROR_NO_MORE_FILES) /遍历文件夹完成 fFinished = TRUE; else /找不到下一个文件 return; FindClose(hSearch);18.复制文件CopyFile(%1,%2,true);19.复制一个文件夹下所有的文件到另一个目录/#include using std:string;char sep=/;#ifde
22、f _WIN32sep=;#endifCFileFind finder;CString path;path.Format(%s*.*,%1);BOOL bWorking = finder.FindFile(path);while (bWorking) bWorking = finder.FindNextFile(); if(!finder.IsDirectory() | finder.IsDots() string s(finder.GetFileName(); CString sourcefile(%1); if(s.rfind(sep,s.length()!=string:npos) so
23、urcefile=sourcefile+/+s.substr(i+1,s.length()-i); CString targetfile(s.substr(i+1,s.length()-i); targetfile=%2+/+targetfile/; CopyFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); 20.提取扩展名CString path(%1);CString %2=path.Mid(path.ReverseFind(.);21.提取文件名CString path(%1);CString %2=path.Mid(
24、path.ReverseFind()+1);22.提取文件路径char appNameMAX_PATH;GetModualFileName(NULL,appName,MAX_PATH);23.替换扩展名/#include using std:string;string s(%1);string newExt(%2);string:size_type i=s.rfind(.,s.length();if(i!=string:npos)s.replace(i+1,newExt.length(),newExt);CString %3(s);24.追加路径/*#include #include #inc
25、lude #include */using namespace std;using namespace boost:filesystem;try path p1=complete(path(%2,native), path(%1,native); path p2=system_complete(path(%2,native); CString %3(p3);catch(exception& e) /e.what();25.移动文件MoveFile(%1,%2); 26.移动一个文件夹下所有文件到另一个目录/#include using std:string;char sep=/;#ifdef
26、_WIN32sep=;#endifCFileFind finder;CString path;path.Format(%s*.*,%1);BOOL bWorking = finder.FindFile(path);while (bWorking) bWorking = finder.FindNextFile(); if(!finder.IsDirectory() | finder.IsDots() string s(finder.GetFileName(); CString sourcefile(%1); if(s.rfind(sep,s.length()!=string:npos) sour
27、cefile=sourcefile+/+s.substr(i+1,s.length()-i); CString targetfile(s.substr(i+1,s.length()-i); targetfile=%2+/+targetfile/; MoveFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); 27.指定目录下搜索文件CString strFileTitle;CFileFind finder;BOOL bWorking = finder.FindFile(%1); /C:windowssysbkup*.cabwhi
28、le(bWorking) bWorking=finder.FindNextFile(); strFileTitle=finder.GetFileTitle(); 28.打开对话框CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,All Files (*.*)|*.*|,AfxGetMainWnd();CString str( ,10000);mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);str.ReleaseBuffer();POSITION mPos=mFileDl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1