MFC文件操作大全
1.创建文件夹
CreateDirectory(%%1,NULL);
2.创建文件 CFile file;
file.Open(%%1,CFile::modeCreate|CFile::modeWrite);
3.删除文件
DeleteFile(%%1);
4.删除文件夹
RemoveDirectory(%%1);
5.删除一个目录下所有的文件夹 CFileFind finder;
BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {
bWorking = finder.FindNextFile(); if (finder.IsDirectory()) {
RemoveDirectory(finder.GetFilePath()); } }
6.清空文件夹
RemoveDirectory(%%1);
CreateDirectory(%%1,NULL);
7.读取文件
char sRead[1024];
CFile mFile(_T(%%1),CFile::modeRead); while (sRead!=null) {
mFile.Read(sRead,1024); CString %%2(sRead); %%3 }
作者:无尾兽零号机 4位粉丝 2009-10-23 22:13 回复此发言
2 回复:MFC文件操作大全
8.写入文件
CFile mFile(_T(%%1), CFile::modeWrite|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.Write(&m_char,2); m_tempFile.Close(); //循环写入多个值 strTempA; int i;
int nCount=6;
//共有6个文件名需要保存
for (i=0;i{strTemp.Format(\"%d\
strTempA=文件名;
//文件名可以从数组,列表框等处取得.
::WritePrivateProfileString(\"UseFileName\c://usefile//usefile.ini); }
strTemp.Format(\"%d\
::WritePrivateProfileString(\"FileCount\//将文件总数写入,以便读出. //读出
nCount=::GetPrivateProfileInt(\"FileCount\for(i=0;i{strTemp.Format(\"%d\strTemp=\"FileName\"+strTemp;
::GetPrivateProfileString(\"CurrentIni\//使用strTempA中的内容. }
10.读取文件属性
dwAttrs = GetFileAttributes(%%1);
if (dwAttrs & FILE_ATTRIBUTE_READONLY) { %%2 }
if (NORMAL & FILE_ATTRIBUTE_READONLY){ %%3 }
11.写入属性
SetFileAttributes(szNewPath,dwAttrs | FILE_ATTRIBUTE_READONLY);
12.枚举一个目录下所有文件夹 CFileFind finder;
BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); 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 szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;
if (!CreateDirectory(szDirPath, NULL)) { //不能创建新的目录 return; }
hSearch = FindFirstFile(%%1+\"//*.*\if (hSearch == INVALID_HANDLE_VALUE) { return; }
while (!fFinished) {
作者:无尾兽零号机 4位粉丝
2009-10-23 22:14 回复此发言
3 回复:MFC
文件操作大全
lstrcpy(szNewPath, szDirPath);
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, 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; }
else {
//找不到下一个文件 return;
} } }
FindClose(hSearch);
14.复制一个目录下所有的文件夹到另一个文件夹下 WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;
char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;
if (!CreateDirectory(szDirPath,NULL)) {
//不能创建新的目录 return; }
BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {
bWorking = finder.FindNextFile(); if(finder.IsDirectory()){
hSearch = FindFirstFile(finder.GetFilePath()+\"//*.*\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)) {
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY); } } else {
//不能复制文件
return; }
if (!FindNextFile(hSearch, &FileData)) {
if (GetLastError() == ERROR_NO_MORE_FILES) {
//遍历文件夹完成 fFinished = TRUE; } else {
//找不到下一个文件 return; } } }
FindClose(hSearch); } }
15.移动文件夹
WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;
char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;
if (!CreateDirectory(szDirPath, NULL)) {
//不能创建新的目录 return; }
hSearch = FindFirstFile(%%1+\"//*.*\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)) {
SetFileAttributes(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);
作者:无尾兽零号机 4位粉丝
2009-10-23 22:14 回复此发言
4 回复:MFC
文件操作大全
16.移动一个文件夹下所有的文件夹到另一个目录下 WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;
char szDirPath[] = %%2;
char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;
if (!CreateDirectory(szDirPath,NULL)) {
//不能创建新的目录 return; }
BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); while (bWorking) {
bWorking = finder.FindNextFile(); if(finder.IsDirectory()){
hSearch = FindFirstFile(finder.GetFilePath()+\"//*.*\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)) {
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY); } } else {
//不能复制文件 return; }
if (!FindNextFile(hSearch, &FileData)) {
if (GetLastError() == ERROR_NO_MORE_FILES) {
//遍历文件夹完成 fFinished = TRUE; } else
{
//找不到下一个文件 return; } } }
FindClose(hSearch);
RemoveDirectory(finder.GetFilePath().GetBuffer(0)); } }
17.以一个文件夹的框架在另一个目录创建文件夹和空文件 WIN32_FIND_DATA FileData; HANDLE hSearch; DWORD dwAttrs;
char szDirPath[] = %%2; char szNewPath[MAX_PATH]; char szHome[MAX_PATH]; BOOL fFinished = FALSE;
if (!CreateDirectory(szDirPath, NULL)) {
//不能创建新的目录 return; }
hSearch = FindFirstFile(%%1+\"//*.*\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_REif(!hFile) {
//不能创建文件 return; }
if (!FindNextFile(hSearch, &FileData)) {
if (GetLastError() == ERROR_NO_MORE_FILES) {
//遍历文件夹完成
fFinished = TRUE; } else {
//找不到下一个文件 return; } } }
FindClose(hSearch);
18.复制文件
CopyFile(%%1,%%2,true);
作者:无尾兽零号机 4位粉丝
2009-10-24 15:17 回复此发言
5 回复:MFC
文件操作大全
19.复制一个文件夹下所有的文件到另一个目录 //#include CFileFind finder; BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); 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) { sourcefile=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(path.ReverseFind('//')+1); 22.提取文件路径 char appName[MAX_PATH]; GetModualFileName(NULL,appName,MAX_PATH); 作者:无尾兽零号机 4位粉丝 2009-10-24 15:17 回复此发言 6 回复:MFC 文件操作大全 23.替换扩展名 //#include 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 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); 作者:无尾兽零号机 4位粉丝 2009-10-24 15:17 回复此发言 7 回复:MFC 文件操作大全 26.移动一个文件夹下所有文件到另一个目录 //#include CFileFind finder; BOOL bWorking = finder.FindFile(%%1+\"//*.*\"); 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) { sourcefile=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 (\"C://windows//sysbkup//*.cab\"); while(bWorking) { bWorking=finder.FindNextFile(); strFileTitle=finder.GetFileTitle(); } 作者:无尾兽零号机 4位粉丝 2009-10-25 10:44 回复此发言 8 回复:MFC 文件操作大全 28.打开对话框 CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMUCString str(\" \ mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000); str.ReleaseBuffer(); POSITION mPos=mFileDlg.GetStartPosition(); CString pathName(\" \CFileStatus status; while(mPos!=NULL) { pathName=mFileDlg.GetNextPathName(mPos); CFile::GetStatus( pathName, status ); } 29.文件分割 CFile m_File; CString m_Filename,m_FileTitle,m_FilePath; m_FileName=%%1; char pBuf[4096]; if(m_File.Open(m_FileName,CFile::modeRead | CFile::shareDenyWrite)) { m_FileName=m_File.GetPathName(); m_FileTitle=m_File.GetFileTitle(); DWORD FileLength=m_File.GetLength(); DWORD PartLength=FileLength/2+FileLength%2; int nCount=1; CString strName; CFile wrFile; DWORD ReadBytes; while(true) { ReadBytes=m_File.Read(pBuf,PartLength); strName.Format(\"%s%d\ wrFile.Open(strName,CFile::modeWrite | CFile::modeCreate); wrFile.Write(pBuf,ReadBytes); wrFile.Close(); if(ReadBytes AfxMessageBox(\"不能打开文件\"); 作者:无尾兽零号机 4位粉丝 2009-10-25 10:45 回复此发言 9 回复:MFC 文件操作大全 30.文件合并 //#include #endif size_t sz=s.rfind(sep,s.length()); if(sz!=string::npos) { CFile Out; CString strFilename(s.substr(i+1,s.length()-i)); if(Out.Open(%%2+\"//\"+strfilename,cfile::modewrite%7ccfile::modecreate)){ for(int i=1;i<=2;i++) { String Filename=%%%2+\"//\"+strfilename+atoi(i); CFile In; if(In.Open(Filename,CFile::modeRead)){ char cbBuffer[4096]; int nFilesize=In.GetLength(); while(nFilesize>0){ int nSize=sizeof(cbBuffer); if(nSize>nFilesize) nSize=nFilesize; try{ In.Read(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } try{ Out.Write(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } nFilesize=nSize; } } else AfxMessageBox(\"不能打开\"+Filename); } } else AfxMessageBox(\"不能创建输出文件\"); } 作者:无尾兽零号机 4位粉丝 2009-10-25 10:45 回复此发言 1 0 回复:MFC文件操作大全 31.文件简单加密 //#include sep='//'; #endif size_t sz=s.rfind(sep,s.length()); if(sz!=string::npos) { CFile Out,In; int nFIlesize; char *lpMsgBuf; CString strFilename(s.substr(i+1,s.length()-i)); if(!in.Open(%%1,CFile::modeRead)){ //不能打开输入文件 return; } if(!Out.Open(%%2+\"//enc_%22+strfilename,cfile::modewrite/ | CFile::modeCreate)){ //不能打开输出文件 return; } nFilesize=In.GetLength(); lpBuffer=new char[nFilesize]; if(lpBuffer==NULL){ //不能分配复制缓存 return; } CFileStatus rStatus; In.GetStatus(%%1,rStatus); try{ In.Read(cbBuffer,nFilesize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } for(int i=0;i bpBuffer[i]=(char)ibt; } try{ Out.Write(cbBuffer,nFilesize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } Out.Close(); //In.Close(); CFile::SetStatus(%%2+\"//enc_%22+strfilename,rstatus); delete[] lpBuffer; } 作者:无尾兽零号机 4位粉丝 2009-10-25 10:45 回复此发言 11 回复:MFC 文件操作大全 32.文件简单解密 //#include size_t sz=s.rfind(sep,s.length()); if(sz!=string::npos) { CFile Out,In; int nFIlesize; char *lpMsgBuf; CString strFilename(s.substr(i+1,s.length()-i)); if(!in.Open(%%2+\"//enc_%22+strfilename,cfile::moderead)){ //不能打开输入文件 return; } if(!Out.Open(%%1,CFile::modeWrite | CFile::modeCreate)){ //不能打开输出文件 return; } nFilesize=In.GetLength(); lpBuffer=new char[nFilesize]; if(lpBuffer==NULL){ //不能分配复制缓存 return; } CFileStatus rStatus; In.GetStatus(%%2+\"//enc_%22+strfilename,rstatus); try{ In.Read(cbBuffer,nFilesize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } for(int i=0;i bpBuffer[i]=(char)ibt; } try{ Out.Write(cbBuffer,nFilesize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } Out.Close(); //In.Close(); CFile::SetStatus(%%1,rStatus); delete[] lpBuffer; } 作者:无尾兽零号机 4位粉丝 2009-10-25 10:45 回复此发言 12 回复:MFC 文件操作大全 33.读取ini文件属性 CStdioFile inifile(%%1,CFile::modeRead); CString path = inifile.GetFilePath(); inifile.Close(); char key[1024]; DWORD bytes = GetPrivateProfileString(%%2,%%3,%%4,key,1024,path); if(bytes < 1024) key[bytes] = '/0'; CString %%5(key); 34.合并一个文件下所有的文件 CString Directory=%%1+\"*.*\"; CFileFind FFile; CFile Out; if(Out.Open(%%2,CFile::modeWrite|CFile::modeCreate)){ BOOL bFound=FFile.FindFile(Directory); while(bFound) { bFound=FFile.FileNextFile(); if(!FFile.IsDirectory() && !FFile.IsDots()) { CString Filename=FFile.GetFileName(); CFile In; if(In.Open(Filename,CFile::modeRead)){ char cbBuffer[4096]; int nFIlesize=In.GetLength(); while(nFIlesize>0){ { int nSize=sizeof(cbBuffer); if(nSize>nFilesize) nSize=nFilesize; try { In.Read(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } try { Out.Write(cbBuffer,nSize); } catch(CFileException *e){ char *lpMsgBuf; if(FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL,e->m_lOsError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&lpMsgBuf,0,NULL)>0){ AfxMessageBox(lpMsgBuf); LocalFree(lpMsgBuf); } e->Delete(); return; } nFilesize=nSize; } } else AfxMessageBox(\"不能打开\"+Filename); } } } else AfxMessageBox(\"不能创建输出文件\"); 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务