MFC文件操作大全
mfc队列用法
mfc队列用法
MFC(Microsoft Foundation Classes)是微软开发的一套基于C++的类库,用于快速开发Windows应用程序。
在MFC中,队列是一种常用的数据结构,提供了方便的方法来管理元素的插入和删除顺序。
要使用MFC队列,首先需要包含相应的头文件。
然后,可以定义一个队列对象。
接下来,可以使用以下方法来操作队列:
1. 插入元素到队列尾部:
2. 从队列头部获取并移除一个元素:
3. 获取队列头部的元素值,但不移除:
4. 判断队列是否为空:
5. 获取队列中元素的个数:
需要注意的是,MFC队列是类型安全的,即只能存储指定类型的元素。
在上面的示例中,我们使用了`int`类型的队列,但你也可以替换成其他类型,如`CString`或自定义的类。
此外,MFC还提供了其他一些队列相关的方法和属性,你可以参考MFC的官方文档或相关教程来深入了解和使用MFC队列。
MFC文件操作大全
1.创建文件夹CreateDirectory(%%1,NULL);2.创建文件CFile f ile;file.Open(%%1,CFile::modeCreate|CFile::modeWrite);3.删除文件DeleteFile(%%1);4.删除文件夹RemoveDirectory(%%1);5.删除一个目录下所有的文件夹CFileFind f inder;BOOL b Working =f inder.FindFile(%%1+"\\*.*"); while (bWorking){bWorking =f inder.FindNextFile();if (finder.IsDirectory()){dir.Delete(finder.GetFilePath());}}6.清空文件夹RemoveDirectory(%%1);CreateDirectory(%%1,NULL)7.读取文件char s Read[1024];CFile m File(_T(%%1),CFile::modeRead);while (sRead!=null){mFile.Read(sRead,1024);CString %%2=CString(sRead);%%3}e lse {//找不到下一个文件r eturn;}}}FindClose(hSearch);14.复制一个文件夹下所有的文件夹到另一个文件夹下WIN32_FIND_DATA F ileData;HANDLE h Search;DWORD d wAttrs;char s zDirPath[] =%%2;char s zNewPath[MAX_PATH];char s zHome[MAX_PATH];BOOL f Finished =F ALSE;if (!CreateDirectory(szDirPath,NULL)){//不能创建新的目录return;}BOOL b Working =f inder.FindFile(%%1+"\\*.*");while (bWorking){bWorking =f inder.FindNextFile();if(finder.IsDirectory()){hSearch =F indFirstFile(finder.GetFilePath()+"\\*.*", &FileData); if (hSearch == I NVALID_HANDLE_VALUE){return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);if (CopyFile(FileData.cFileName, s zNewPath, F ALSE)){dwAttrs =G etFileAttributes(FileData.cFileName);DWORD d wAttrs;char s zDirPath[] =%%2;char s zNewPath[MAX_PATH];char s zHome[MAX_PATH];BOOL f Finished =F ALSE;if (!CreateDirectory(szDirPath, N ULL)){//不能创建新的目录return;}hSearch =F indFirstFile(%%1+"\\*.*", &FileData);if (hSearch == I NVALID_HANDLE_VALUE){return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);if (CopyFile(FileData.cFileName, s zNewPath, F ALSE)) {dwAttrs =G etFileAttributes(FileData.cFileName);if (!(dwAttrs &F ILE_ATTRIBUTE_READONLY)) {SetFileAttributes(szNewPath,dwAttrs |F ILE_ATTRIBUTE_READONLY);}}else{//不能复制文件return;}if (!FindNextFile(hSearch, &FileData)){if (GetLastError() == E RROR_NO_MORE_FILES) {//遍历文件夹完成return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);if (CopyFile(FileData.cFileName, s zNewPath, F ALSE)) {dwAttrs =G etFileAttributes(FileData.cFileName);if (!(dwAttrs &F ILE_ATTRIBUTE_READONLY)) {SetFileAttributes(szNewPath,dwAttrs |F ILE_ATTRIBUTE_READONLY);}}else{//不能复制文件return;}if (!FindNextFile(hSearch, &FileData)){if (GetLastError() == E RROR_NO_MORE_FILES) {//遍历文件夹完成fFinished =T RUE;}else{//找不到下一个文件return;}}}FindClose(hSearch);RemoveDirectory(finder.GetFilePath().GetBuffer(0)); }17.以一个文件夹的框架在另一个目录创建文件夹和空文件WIN32_FIND_DATA F ileData;HANDLE h Search;DWORD d wAttrs;char s zDirPath[] =%%2;char s zNewPath[MAX_PATH];char s zHome[MAX_PATH];BOOL f Finished =F ALSE;if (!CreateDirectory(szDirPath, N ULL)){//不能创建新的目录return;}hSearch =F indFirstFile(%%1+"\\*.*", &FileData);if (hSearch == I NVALID_HANDLE_VALUE){return;}while (!fFinished){lstrcpy(szNewPath, s zDirPath);lstrcat(szNewPath, F ileData.cFileName);HANDLE h File=CreateFileHandle h File=CreateFile(szNewPath,GENERIC_REA D,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORM AL|FILE_FLAG_SEQUENTIAL_SCAN,NULL);if(!hFile){//不能创建文件return;}if (!FindNextFile(hSearch, &FileData)){if (GetLastError() == E RROR_NO_MORE_FILES){//遍历文件夹完成fFinished =T RUE;targetfile=%%2+"//"+targetfile/;CopyFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); }}}20.提取扩展名//#include <string>using s td::string;string s(%%1);size_t i=s.rfind('.',s.length());if(i!=string::npos)CString %%2(s.substr(i+1,s.length()-i));elseCString %%2="";21.提取文件名//#include <string>using s td::string;string s(%%1);char s ep='/';#ifdef _WIN32sep='\\';#endifsize_t i=s.rfind(sep,s.length());if(i!=string::npos)CString %%2(s.substr(i+1,s.length()-i));elseCString %%2="";/*CString p ath(%%1);CString %%2=path.Mid(path.ReverseFind('\\')+1);*/22.提取文件路径//#include <string>using s td::string;string s(%%1);using n amespace b oost::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 <string>using s td::string;char s ep='/';#ifdef _WIN32sep='\\';#endifCFileFind f inder;BOOL b Working =f inder.FindFile(%%1+"\\*.*");while (bWorking){bWorking =f inder.FindNextFile();if(!finder.IsDirectory() || f inder.IsDots()){string s(finder.GetFileName());CString s ourcefile(%%1);if(s.rfind(sep,s.length())!=string::npos){sourcefile=sourcefile+"//"+s.substr(i+1,s.length()-i);CString t argetfile(s.substr(i+1,s.length()-i));targetfile=%%2+"//"+targetfile/;MoveFile(sourcefile.GetBuffer(0),targetfile.GetBuffer(0),true); }}}#ifdef _WIN32sep='\\';#endifsize_t s z=s.rfind(sep,s.length());if(sz!=string::npos){CFile O ut;CString s trFilename(s.substr(i+1,s.length()-i));if(Out.Open(%%2+"//"+strfilename,cfile::modewrite%7ccfile::modecreate)){ for(int i=1;i<=2;i++){String F ilename=%%%2+"//"+strfilename+atoi(i);CFile I n;if(In.Open(Filename,CFile::modeRead)){char c bBuffer[4096];int n Filesize=In.GetLength();while(nFilesize>0){int n Size=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;}using s td::string;string s(%%1);char s ep='/';#ifdef _WIN32sep='\\';#endifsize_t s z=s.rfind(sep,s.length());if(sz!=string::npos){CFile O ut,In;int n FIlesize;char *lpMsgBuf;CString s trFilename(s.substr(i+1,s.length()-i));if(!in.Open(%%1,CFile::modeRead)){//不能打开输入文件return;}if(!Out.Open(%%2+"//enc_%22+strfilename,cfile::modewrite/ |C File::modeCrea te)){//不能打开输出文件return;}nFilesize=In.GetLength();lpBuffer=new c har[nFilesize];if(lpBuffer==NULL){//不能分配复制缓存return;}CFileStatus r Status;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<nFilesize;i++){int i bt=lpBuffer[i];ibt+=100;ibt%=256;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);d elete[] l pBuffer;}32.文件简单解密//#include <string>using s td::string;string s(%%1);char s ep='/';#ifdef _WIN32sep='\\';#endifsize_t s z=s.rfind(sep,s.length());if(sz!=string::npos){CFile O ut,In;int n FIlesize;char *lpMsgBuf;CString s trFilename(s.substr(i+1,s.length()-i));if(!in.Open(%%2+"//enc_%22+strfilename,cfile::moderead)){ //不能打开输入文件return;}if(!Out.Open(%%1,CFile::modeWrite |C File::modeCreate)){ //不能打开输出文件return;}nFilesize=In.GetLength();lpBuffer=new c har[nFilesize];if(lpBuffer==NULL){//不能分配复制缓存return;}CFileStatus r Status;In.GetStatus(%%2+"//enc_%22+strfilename,rstatus);t ry{In.Read(cbBuffer,nFilesize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |F ORMAT_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<nFilesize;i++){int i bt=lpBuffer[i];ibt-=100;ibt+=256;ibt%=256;bpBuffer[i]=(char)ibt;}try{Out.Write(cbBuffer,nFilesize);}catch(CFileException *e){char *lpMsgBuf;if(FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |F ORMAT_MESSAGE_FROM _SYSTEM,NULL,e->m_lOsError,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPSTR)&lpMsgBuf,0,NULL)>0){AfxMessageBox(lpMsgBuf);LocalFree(lpMsgBuf);}e->Delete();return;char c bBuffer[4096];int n FIlesize=In.GetLength();while(nFIlesize>0){{int n Size=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(*/WritePrivateProfileString(%%2,%%3,%%4,path);36.获得当前路径TCHAR s zDir[MAX_PATH];GetCurrentDirectory(szDir,MAX_PATH];CString %%1(szDir);37.读取XML数据库//#include <string>//using n amespace s td;char s Read[5192];CFile m File(_T(%%1),CFile::modeRead);mFile.Read(sRead,5192);if(sRead!=null){string t mp;while(sRead!=null){tmp.append(sRead);mFile.Read(sRead,5192);}//%%2="Logs" //%%4="ID" //%%6="Content"//%%3="Log" //%%5="Time"//%%7 c ode %%8 t ime %%9 c ontentstring t arget(%%7),globalTag("<"+%%2+">");string p ropTag1("<"+%%5+">",endTag1("</"+%%5+">"); string p ropTag2("<"+%%6+">",endTag1("</"+%%6+">");int o ffset=tmp.find_first_of(globalTag);while(offset){offset=tmp.find_first_of(globalTag);string d escription;tmp.copy(description.begin(),tmp.find_first_of("\"",offset+1)-offset);if(pare(description)==0){#include "zconf.h"*/HANDLE h File, h FileToWrite;CString s trFilePath;m_ctrEdit.GetWindowText(strFilePath);//打开要进行解压缩的文件hFile =C reateFile(strFilePath, // f ile n ameGENERIC_READ, // o pen f or r eadingFILE_SHARE_READ, // s hare f or r eadingNULL, // n o s ecurityOPEN_EXISTING, // e xisting f ile o nlyFILE_ATTRIBUTE_NORMAL, // n ormal f ileNULL); // n o a ttr. t emplateif (hFile == I NVALID_HANDLE_VALUE){AfxMessageBox("Could n ot o pen f ile t o r ead"); // p rocess e rror return;}HANDLE h MapFile, h MapFileToWrite;//创建一个文件映射hMapFile =C reateFileMapping(hFile, // C urrent f ile h andle. NULL, // D efault s ecurity.PAGE_READONLY, // R ead/write p ermission.0, // M ax. o bject s ize.0, // S ize o f h File. "ZipTestMappingObjectForRead"); // N ame o f m apping o bject. if (hMapFile == N ULL){AfxMessageBox("Could n ot c reate f ile m apping o bject"); return;}LPVOID l pMapAddress, l pMapAddressToWrite;//创建一个文件映射的视图用来作为source lpMapAddress =M apViewOfFile(hMapFile, // H andle t o m apping object.FILE_MAP_READ, // R ead/write p ermission0, // M ax. o bject s ize.0, // S ize o f h File.0); // M ap e ntire f ile.PAGE_READWRITE, // R ead/write p ermission.0, // M ax. o bject s ize.dwFileLengthToWrite, // S ize o f h File. "ZipTestMappingObjectForWrite"); // N ame o f m apping o bject.if (hMapFileToWrite == N ULL){AfxMessageBox("Could n ot c reate f ile m apping o bject f or w rite");return;}lpMapAddressToWrite =M apViewOfFile(hMapFileToWrite, //Handle t o m apping object.FILE_MAP_WRITE, // R ead/write p ermission0, // M ax. o bject s ize.0, // S ize o f h File.0); // M ap e ntire f ile.if (lpMapAddressToWrite == N ULL){AfxMessageBox("Could n ot m ap v iew o f f ile");return;}//这里是将压缩前的大小保存在文件的第一个DWORD里面LPVOID p Buf =l pMapAddressToWrite;//这里就是最重要的,zlib里面提供的一个方法,将源缓存的数据压缩至目的缓存//原形如下://int c ompress (Bytef *dest, u Longf *destLen, c onst B ytef *source, u Long s ourceLen); //参数destLen返回实际压缩后的文件大小。
MFC基本操作
5
ybdesire@
4) 为 Combo Box 添加 CBN_SELCHANGE 事件处理函数
void CToolTryDlg::OnSelchangeCombo1() { CString sName; m_Combo.GetLBText(m_Combo.GetCurSel(), sName); MessageBox(sName); } 成员函数:SetCurSel(num ) ;在 combo 中显示默认值
//为列表控件添加标题 m_List.InsertColumn(0,"标题一",LVCFMT_LEFT,100,-1); m_List.InsertColumn(1,"标题二",LVCFMT_LEFT,100,-1); //为列表控件添加记录 int nCurItem; nCurItem = m_List.InsertItem(0,"1 记录一"); m_List.SetItemText(nCurItem, 1, "1 记录二"); nCurItem = m_List.InsertItem(1,"2 记录一"); m_List.SetItemText(nCurItem, 1, "2 记录二"); nCurItem = m_List.InsertItem(2,"3 记录一"); m_List.SetItemText(nCurItem, 1, "3 记录二");
2)用同样的方法给 Edit Box 添加成员变量 m_Edit
添加以下代码即可实现,注意不能少 Updatedata: UpdateData(TRUE);//获取文本框输入 m_Show = m_Edit; UpdateData(FALSE);//动态更新标签显示 3、 给按钮添加位图 1) 新建一个按钮,改其属性为 Bitmap,如下:
一步一步教你如何通过MFC操作excel
excel合成需要如下步骤:打开MFC工程(任何工程都可以,此处以串口为例)→打开MFC工程类向导并选择Automation→点击Add class,并选择from a type library。
江会弹出如下浏览框在浏览框中找到并选择office的excel.exe(或者是excel.olb),这里必须是office,而不能是wps,因为wps对应的事excel.et而不是exe文件,这里我选择的是excel.exe,我是用的是office2010,通过电脑的文件搜索功能定位了excel.exe的位置并添加的。
打开excel.exe之后,选择新类,如图总共选择六个类,分别是_Application、Workbooks、_Workbook、Worksheets、_Worksheet、Range,加入新类,即可达到用MFC操作excel的前提条件。
选完之后,可在classview中看到如下六个新类。
→在My***Dlg.cpp中加入#include”excel.h”与#include”comdef.h”,同时,在My***.cpp中加入#include”excel.h”→在My***App::InitInstance(),加入如下代码:if(!AfxOleInit() ){AfxMessageBox("初始化Ole出错!");return FALSE;},效果如图:注意excel保存时需要添加“comdef.h”头文件。
到此为止,excel在MFC中的配置环境已完成。
接下来添加一个按键,用于保存成excel文档,按键对应的程序如下:在对应(需要操作excel的)的CPP文件前加#include"comdef.h"_Application ExcelApp;Workbooks workbooks;_Workbook workbook;Worksheets sheets;_Worksheet sheet;Range range;if(!ExcelApp.CreateDispatch("Excel.Application",NULL)){AfxMessageBox("创建Excel服务失败!");}//创建Excel2000服务器(启动Excel)ExcelApp.SetVisible(false);workbooks.AttachDispatch(ExcelApp.GetWorkbooks(),true);//用来锁定对应的工作簿workbook.AttachDispatch(workbooks.Add(COleVariant((_bstr_t)CString(). AllocSysString())));//得到Worksheetssheets.AttachDispatch(workbook.GetWorksheets(),true);sheet.AttachDispatch(sheets.GetItem(_variant_t("Sheet1")),true);//得到全部Cells,此时,range是cells的集合.range.AttachDispatch(sheet.GetCells(),true);//设置1行2列的单元的值range.SetItem(_variant_t((long)1),_variant_t((long)2),_variant_t("This Is A Excel Test Program!"));TCHAR szPath[MAX_PATH];::GetCurrentDirectory(MAX_PATH,szPath);CString strPath(szPath);strPath+=_T("\\test.xlsx");sheet.SaveAs(strPath,vtMissing,vtMissing,vtMissing,vtMissing, vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);ExcelApp.SetVisible(true);ExcelApp.ReleaseDispatch();workbooks.ReleaseDispatch();workbook.ReleaseDispatch();sheets.ReleaseDispatch(); sheet.ReleaseDispatch();Excel的数据读取:运用在MSDN中的示例函数(具体函数见excel文档创建示例4):根据顺序,依次从系统中获取app、books、book、sheets、sheet、range、对象,然后获取路径strpath。
MFC和C++关于文件的读写操作以及文件的打开和保存
MFC和C++关于文件的读写操作以及文件的打开和保存通过近来的学习,总结一下关于C++开发中文件的读写操作以及文件的打开和保存的方法。
一、文件的读写操作:(1)C语言对文件的读写操作在C语言中,对文件的读写操作是用FILE结构体和常用的对文件操作的函数实现的,下面总结一下C语言中对文件操作的常用函数:fopen() 打开以文件名指定的文件fwrite() 写文件fread() 读文件fseek() 移动文件的指针到新的位置通过该函数的参数设定的偏移量和初始位置rewind() 移动文件的指针到文件流的开始位置,在通常情况下可用fseek()实现相同的功能,但二者有区别ftell() 获得当前文件指针的位置,常用该函数获得文件的文件流的长度fflush() 刷新缓冲区中的内容,当文件写入时直接将文件流的内容从缓冲区写入磁盘,当读取文件时直接将磁盘文件写入缓冲区,而不必等程序运行结束或关闭程序。
fclose() 关闭文件memset() 在一段内存块中填充某个给定的值示例代码如下:/*********************************************************** C语言实现文件写操作 ************************************************************/FILE *pFile=fopen("CLanguage.txt","w");fwrite("CLanguage",1,strlen("CLanguage"),pFile);//fseek(pFile,0,SEEK_SET);//fwrite("实现文件写操作",1,strlen("实现文件写操作"),pFile);fclose(pFile);/*********************************************************** C语言实现文件读操作 ************************************************************/FILE *pFile=fopen("CLanguage.txt","r");//char ch[100];//memset(ch,0,100);//fread(ch,1,100,pFile);//MessageBox(ch);char* pBuf;int length;fseek(pFile,0,SEEK_END);length=ftell(pFile);pBuf=new char[length+1];//fseek(pFile,0,SEEK_SET);rewind(pFile);fread(pBuf,1,length,pFile);pBuf[length]=0;MessageBox(pBuf);fclose(pFile);注意:在用C语言实现文件的读操作时,要注意文件的指针位置。
mfc cfile用法
mfc cfile用法
MFC的CFile类是一个用于文件输入输出操作的核心类之一。
它提供了一系列的方法,用于打开、关闭、读取、写入和定位文件内的数据。
首先,我们需要创建一个CFile对象来表示我们想要操作的文件。
可以通过构造函数来实现,例如:
CFile myFile;
然后,我们可以使用Open方法来打开文件。
这个方法需要指定文件名以及打开的模式(如读取、写入、追加等)。
例如:myFile.Open(L"myfile.txt", CFile::modeRead);
读取文件内容可以使用Read方法。
该方法需要指定一个缓冲区和希望读取的字节数。
例如,我们可以创建一个大小为100的字符数组,来读取文件中的数据:
char buffer[100];
myFile.Read(buffer, 100);
写入文件内容可以使用Write方法。
该方法需要指定一个缓冲区和希望写入的字节数。
例如,我们可以将一个字符串写入文件中:char* str = "Hello, world!";
myFile.Write(str, strlen(str));
最后,我们需要关闭文件来释放资源。
可以使用Close方法来实现:
myFile.Close();
除了上述基本的文件操作外,CFile还提供了其他一些有用的方法,比如Seek用于文件指针的定位、GetLength用于获取文件的长度等。
总之,通过使用MFC的CFile类,我们可以方便地进行文件的读写操作。
希望这篇文章能帮助您快速了解和掌握CFile的用法。
MFC使用教程
MFC使用教程第一部分:MFC简介Visual C++ 不仅仅是一个编译器。
它是一个全面的应用程序开发环境,使用它你充分利用具有面向对象特性的C++ 来开发出专业级的Windows 应用程序。
为了能充分利用这些特性,你必须理解C++ 程序设计语言。
掌握了C++,你就必须掌握Microsoft 基本类库(MFC) 的层次结构。
该层次结构包容了Windows API 中的用户界面部分,并使你能够很容易地以面向对象的方式建立Windows 应用程序。
这种层次结构适用于所有版本的Windows 并彼此兼容。
你用MFC 所建立的代码是完全可移植的。
简单介绍MFC的基本概念和术语以及事件驱动程序设计方法。
输入、编译和运行一个简单的MFC程序。
第二部分中将详细解释这些代码。
第三部分讨论了MFC控件和如何定制它们。
什么是MFC?如果你要建立一个Windows 应用程序,应该如何下手?好的开端是从设计用户界面开始。
首先,你要决定什么样的用户能使用该程序并根据需要来设置相应的用户界面对象。
Windows 用户界面有一些标准的控件,如按钮、菜单、滚动条和列表等,这对那些Windows 用户已经是很熟悉了。
要记住的是,作为程序员必须选择一组控件并决定如何把它们安排到屏幕上。
传统上,你需要在纸上做一下用户界面的草图,直到对各元素感到满意为止。
这对于一些比较小的项目,以及一些大项目的早期原型阶段是可以的。
下一步,是要实现代码。
为任何Windows 平台建立应用程序时,程序员都有两种选择:C 或C++。
使用C,程序员是在Windows 应用程序界面( API ) 的水平上编写代码。
该界面是由几百个 C 函数所组成,这些函数在Windows API 参考手册中都有介绍。
对于Windows NT, API 被称为"Win32 API",以区别于其用于Windows 3.1的16位API, Microsoft 也提供了C++ 库,它位于任何Windows API 之上,能够使程序员的工作更容易。
mfc使用教程
mfc使用教程MFC使用教程不要标题MFC是Microsoft Foundation Class的缩写,是一套C++的库,用于开发Windows平台的应用程序。
以下是一个简单的MFC使用教程,帮助你了解如何创建一个基本的MFC应用程序。
首先,打开Visual Studio并选择创建新项目。
在项目模板中,选择"MFC应用程序"。
在下一步中,选择"对话框"作为应用程序类型。
接下来,选择项目的名称和位置,然后点击"完成"按钮。
Visual Studio将自动生成一个MFC应用程序的基本框架。
应用程序的主要代码位于"MainFrm.cpp"和"MainFrm.h"文件中。
打开"MainFrm.cpp"文件,你将看到一个名为"Create"的函数。
在这个函数中,可以创建应用程序的主窗口。
在"Create"函数的内部,使用"MFC应用程序向导"提供的函数来创建一个对话框。
例如,可以使用"CDialogEx"类来创建一个简单的对话框。
在"Create"函数的最后,需要调用"ShowWindow"函数显示主窗口,并调用"UpdateWindow"函数来更新窗口。
在"MainFrm.h"文件中,你可以定义应用程序的主窗口类。
例如,可以继承自"CFrameWnd"类,并添加自定义的成员变量和函数。
在"MainFrm.cpp"文件的"Create"函数中,还可以添加一些自定义的代码,例如设置窗口的标题和大小,添加菜单和工具栏等。
最后,编译并运行应用程序。
你应该能够看到一个简单的MFC应用程序的窗口。
MFC中文件操作
一、C语言的文件操作通过FILE结构体实现。
1、文件的打开C语言中对文件进行操作必须首先打开文件,打开文件主要涉及到fopen函数。
fopen函数的原型为FILE*fopen(const char*path,const char*mode)示例:FILE*pFile=fopen(“1.txt”,”w”);其中path为文件路径,mode为打开方式。
1)对于文件路径,只需注意若未明确给出绝对路径,则默认该文件在工程的目录下。
若需给出绝对路径,则注意转义字符'\',比如有文件test.txt存放在C 盘根目录下,则文件路径参数值应为C:\\test.txt。
2)对于mode,主要由r,w,a,+,b,t六个字符组合而成。
r:只读方式,文件必须存在;w:只写方式,若文件存在,则原有内容会被清除;若文件不存在,则会建立文件;a:追加方式打开只写文件,只允许进行写操作,若文件存在,则添加的内容放在文件末尾;若不存在,则建立文件;+:可读可写;b:以二进制方式打开文件;t:以文本方式打开文件(默认方式下以文本方式打开文件)。
下面是常见的组合:r:以只读的方式打开文件,只允许读,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;r+:以可读可写的方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;rb+:以可读可写、二进制方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;rt+:以可读可写、文本方式打开文件,允许读写,此文件必须存在,否则返回NULL,打开成功后返回文件指针,位置指针指向文件头部;w:以只写的方式打开文件,只允许写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部;w+:以读写的方式打开文件,允许读写,若文件存在,文件中原有内容会被清除;若文件不存在,则创建文件,打开成功后返回文件指针,位置指针指向文件头部;a:以追加、只写的方式打开文件,只允许写。
mfc文件操作CFile类之创建文件的方法
mfc⽂件操作CFile类之创建⽂件的⽅法mfc⽂件操作类CFileCFile类的⼏种构造函数CFile();//不带参数的构造函数。
CFile(int hFile);//带⽂件句柄参数的构造函数。
CFile(LPCTSTR lpszFileName,//要打开的⽂件路径UINT nOpenFlage //打开⽂件时的共享和访问模式);//带⽂件路径和打开⽅式的构造函数除了⽤构造函数打开⽂件外还可以⽤CFile类的成员函数Open来打开OPen函数原型virtual BOOL Open(LPCTSTR lpszFilename,//打开⽂件的路径,可以是绝对路径,也可以是相对路径。
UINT nOpenFlags, //打开⽂件时的共享和访问模式。
CFileException *pError=NULL//打开⽂件的异常捕获变量);CFile构造函数和CFile成员函数Open的参数nOpenFlage 可以是以下任意组合(使⽤位或|组合):CFile::modeCreate新建⽂件,如果⽂件已存在,则清空⽂件长度。
CFile::modeNotruncate与modeCreate组合使⽤。
如果创建的⽂件已经存在,则打开已存在的⽂件,不存在则新建⽂件。
CFile::modeRead以只读⽅式打开⽂件。
CFile::modeWrite以只写⽅式打开⽂件。
CFile::modeNoInherit阻⽌⽂件从⼦进程中继承。
CFile::shareDenyNone共享读写的打开⽂件。
CFile::shareDenyRead排它读权限打开⽂件。
CFile::shareDenyWrite排它写权限打开⽂件。
CFile::shareExclusive排它模式打开⽂件。
CFile::typeText⽂本模式打开⽂件。
CFile::typeBinary⼆进制以写模式打开该⽂件。
创建⽂件并打开⽰例:void CMFCApplication42Dlg::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码CString filename = _T("C:\\Users\\Administrator\\Desktop\\test.txt"); //定义⽂件名TRY //异常处理{CFile f(filename, CFile::modeCreate | CFile::modeWrite);}CATCH (CFileException, e)//异常触发{#ifdef _DEBUG //如果是调试模式afxDump << "打开⽂件失败" << e->m_cause << "\n";#endif}END_CATCH}总结以上所述是⼩编给⼤家介绍的mfc⽂件操作CFile类之创建⽂件的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!。
使用MFC操作EXCEL文件
使用MFC操作EXCEL文件一、加载1、在VC6.0里创建一个MFC工程2、打开MFCClassWizard窗口(查看—>建立类向导),选择Automation,单击AddClass按钮,选择Froma type library...,弹出文件选择对话框,之后定位到C:\ProgramFiles\MicrosoftOffice\OFFICE11\EXCEL.EXE,在生成类中添加所有的对象(其实添加需要的即可,为了简便,不出错保留了冗余),如下图。
void CTestExcelDlg::OnButton1(){//Workbooks—>Workbook —>Worksheets—>Worksheet —>Range _Application app; //Excel应用程序接口Workbooks books; //工作薄集合_Workbook book; //工作薄Worksheets sheets; //工作表集合_Worksheet sheet; //工作表Range range; //Excel中针对单元格的操作都应先获取其对应的Range对象Font font;Range cols;/*COleVariant类为VARIANT数据类型的包装,在自动化程序中,通常都使用VARIANT数据类型进行参数传递。
故下列程序中,函数参数都是通过COleVariant类来转换了的。
*///covOptional 可选参数的VARIANT类型COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ ERROR);if( !app.CreateDispatch("Excel.Application") ){this->MessageBox("无法创建Excel应用!");return;}//获取工作薄集合books=app.GetWorkbooks();//添加一个工作薄book=books.Add(covOptional);//获取工作表集合sheets=book.GetSheets();//获取第一个工作表sheet=sheets.GetItem(COleVariant((short)1));//选择工作表中A1:A1单元格区域range=sheet.GetRange(COleVariant("A1"),COleVariant("A1" ));//设置A1=HELLO EXCEL!"range.SetValue(COleVariant("HELLO EXCEL!"));//调整格式,设置粗体font=range.GetFont();font.SetBold(COleVariant((short)TRUE));//选择A2单元格,插入一个公式"=RAND()*100000",并设置A2数字格式为货币形式range=sheet.GetRange(COleVariant("A2"),COleVariant("A2" ));range.SetFormula(COleVariant("=RAND()*100000"));range.SetNumberFormat(COleVariant("$0.00"));//选择A:A列,设置宽度为自动适应cols=range.GetEntireColumn();cols.AutoFit();//显示Excel表格,并设置状态为用户可控制app.SetVisible(TRUE);app.SetUserControl(TRUE);2. 打开一个已有的excel表格实例[cpp]view plaincopyCString strPath;strPath += "C:\\template.xlt"; // 模板的路径CFileFind filefind;if( !filefind.FindFile( strPath ) ){AfxMessageBox( "没有找到模版文档,请其查找" );return;}LPDISPATCH lpDisp; //接口指针books=app.GetWorkbooks();lpDisp = books.Open(m_filepath,covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional); //与的不同,是个参数的,直接在后面加了两个covOptional成功了book.AttachDispatch(lpDisp);3. 保存一个excel文件实例[cpp]view plaincopy1.book.SetSaved(TRUE);4. 另存一个excel文件实例[cpp]view plaincopy1.book.SaveAs(COleVariant(m_filename),covOptional,2. covOptional,covOptional,3. covOptional,covOptional,(long)0,4.covOptional,covOptional,covOptional,5.covOptional,covOptional); //与的不同,是个参数的,直接在后面加了两个covOptional成功了5. 释放一个excel文件实例经试验证实,不释放第二次使用excel时会中断,放在类的析构里面有时调用不到,主动调用最保险。
MFC文件操作
file.Read(buf,100);
MessageBox(buf);
}
2. 文本文件和二进制文件的区别:
文件文件是一种特殊的二进制文件,当它遇到回车键10时,写入文件时会自动地在它的前面加一个13,而读出文件时遇到13 10 的组合时,又把它还原到10。而二进制文件就是把数据原封不动的写入文件,原封不动的再读取出来,没有文本文件的这种转换操作。
CFile::modeNoTruncate);
f.SeekToEnd();
f.Write("hello",5);
//file.Close();如果我不关闭的话,其析构函数会为我关闭。
II. 读文件:
CFile f("c:\\1.txt",CFile::modeRead);
ofs.write("猎狐网络",sizeof("猎狐网络"));
ofs.close();//最好自己将文件关掉,不关也行,这个filebuf对象的析构函数为你关。
读:
ifstream ifs("c:\\1.txt");
char buf[100];
ifs.read(buf,100);
读取一行文本到缓冲区,遇到“0x0D,0x0A”时停止读取,并且去掉硬回车“0x0D”,保留换行符“0x0A”,在字符串末尾添加“\0”(0x00)。nMax个字符里包含0x00这个字符。分析如下:
1)如果nMax <= 字符数,读取(nMax-1)个字符 + 0x00
2)如果nMax = 字符数 + 1,读取nMax个字符 + 0x00
基于MFC的大型数据文件处理方法
基于MFC的大型数据文件处理方法1. 使用MFC的CFile类进行文件操作:CFile类提供了一系列的方法用于打开、读取、写入和关闭文件。
在处理大型数据文件时,可以使用该类来读取和写入文件数据。
首先,使用CFile::Open方法打开文件。
然后,使用CFile::Read和CFile::Write方法读取和写入数据。
最后,使用CFile::Close方法关闭文件。
2. 使用MFC的CStdioFile类进行文件处理:CStdioFile类是CFile 类的派生类,提供了一些更高级的文件读写方法。
使用CStdioFile类可以通过一行一行的方式读取和写入文件数据。
通过使用CStdioFile::ReadString方法可以一次读取一行字符串数据,使用CStdioFile::WriteString方法可以一次写入一行字符串数据。
3. 使用MFC的CRecordset类进行数据库操作:如果大型数据文件中的数据是结构化的,并且可以使用SQL查询语句进行读取和写入,那么可以使用CRecordset类来进行数据库操作。
CRecordset是一个用于操作数据库记录集的类,可以通过它执行SQL语句并获取结果。
首先,使用MFC 的数据库类(如CDatabase)建立一个数据库连接。
然后,使用CRecordset::Open方法打开数据表,并使用CRecordset::GetFieldValue 方法获取字段值。
4. 使用MFC的CFileDialog类进行文件选择:在大型数据文件处理中,通常需要选择输入或输出的文件。
MFC提供了CFileDialog类来方便用户选择文件。
使用CFileDialog::DoModal方法可以弹出一个文件选择对话框,让用户选择文件,然后使用CFileDialog::GetPathName方法获取用户选择的文件路径。
5. 使用MFC的CFileFind类进行文件查找:如果需要在一个目录中批量处理大量的数据文件,可以使用CFileFind类进行文件查找。
MFC文件夹打开的操作
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
m_FileDir = szFolder;//选择的文件夹路径
CEdit* cfolder;
cfolder = (CEdit*) GetDlgItem(flidersdit);
str1 = dlg.GetFileName();
CEdit* cfolder;
cfolder = (CEdit*) GetDlgItem(flidersdit);
cfolder->SetWindowText(str1);
// + 1
}
效果图
3,打开文件夹,选择所选择的文件夹,获取文件夹的路径
cfolder->SetWindowText(str);
// + 1
}
效果图
CFileDialog dlg(TRUE,NULL,NULL,NULL,NULL);
if(dlg.DoModal()==IDOK)//
{
CString str,str1;
str = dlg.GetPathName();
cfolder->SetWindowText(szFolder);
OnPaint();
TRACE("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
MFCCFile类操作文件的方法
MFCCFile类操作文件的方法当把结构逐个写入硬盘文件时,注意,结构中不能包含string变量类型,因为,string是不定长的变量类型。
应使用char xx[90]形式的变量,文件操作API和CFile类在VC中,操作文件的方法有两种,一是利用一些API函数来创建,打开,读写文件,另外一个是利用MFC的CFile类,CFile封装了对文件的一般操作。
下面酒主要介绍如何利用这两种方法操作文件。
1.创建或打开一个文件API函数CreateFile可打开和创建文件、管道、邮槽、通信服务、设备以及控制台,但是在此时只是介绍用这个函数怎么实现创建和打开一个文件。
HANDLE CreateFile(LPCTSTR lpFileName, // 要打开的文件名DWORD dwDesiredAccess, // 文件的操作属性DWORD dwShareMode, // 文件共享属性LPSECURITY_ATTRIBUTES lpSecurityAttributes,// 文件安全特性DWORD dwCreationDisposition, //文件操作DWORD dwFlagsAndAttributes, // 文件属性HANDLE hTemplateFile // 如果不为零,则指定一个文件句柄。
新文件将从这个文件中复制扩展属性);文件的操作属性:如果为零,表示只允许获取与一个设备有关的信息,GENERIC_READ 表示允许对设备进行读访问;如果为GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);文件的共享属性:零表示不共享;FILE_SHARE_READ 或FILE_SHARE_WRITE 表示允许对文件进行读/写共享访问文件的操作有:CREATE_NEW:创建文件;如文件存在则会出错CREATE_ALWAYS:创建文件,会改写前一个文件OPEN_EXISTING:文件必须已经存在。
MFC文件操作2
if(IDOK==fileDlg.DoModal())//用来显示对话框
{
CFile file(fileDlg.GetFileName()/*得到选择的文件名*/,
{
// TODO: add extra initialization before printing
}
void CFileView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
//直接将一个整形数据98341写入文件读取出来将是乱码
int i=98341;
fwrite(&i,4,1,pFile);
//其实在文件中,都是以ASCII码写入的,
//可以将作为一个字符串保存到文件
CString str="98341";
#include <fstream.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
HANDLE hFile;
//用CreateFile创建文件
hFile = CreateFile("useAPI.txt",GENERIC_WRITE,
MFC中的文件读写操作
由于要写个游戏工具方便编程,要用到文件类的操作,看到这篇文章不错,特转载计算机室如何管理自身所存放着的大量的信息的呢?windows的磁盘管理程序为我们提供了一套严密而又高效的信息组织形式--硬盘上的信息是以文件的形式被管理的。
面向存储的文件技术什么是文件?计算机中,一篇文章、一幅图片、一个程序等都是以文件的形式存储在磁盘上的,每个文件都有一个文件名。
计算机就是对文件按名存取的。
文件名的格式如下:主文件名.扩展名。
为什么要在程序中使用文件?通常,程序中的数据在程序运行结束之后,就会从内存中清除,再次运行程序时不会自动出现。
在编制程序的过程中不可避免的会遇到将某些数据永久保存的问题,当程序关闭后,依然可以使用这些数据,这时就需要进行文件操作。
文件类型Visual C++处理的文件通常分为两种:文本文件:只可被任意文本编辑器读取ASCII文本。
二进制文件:指对包含任意格式或无格式数据的文件的统称。
这里只介绍文本文件的读写,INI文件也属于文本文件的范畴,且INI文件的结构和用途与普通的文本文件不同,所以会单独介绍。
第一部分:文本文件文本文件的读写认识CFile类;认识文本文件;能够正确灵活应用文本文件存取信息;避免文本文件读写的常见误区。
CFile是MFC的文件操作基本类,它直接支持无缓冲的二进制磁盘I/O操作,并通过其派生类支持文本文件、内存文件和socket文件。
客户操作记录实例功能预览及关键知识点许多系统,出于安全或其他原因,常常要求随时对键盘进行监控,利用Hook(钩子)技术编写的应用程序能够很好地达到这个目的。
本软件就制作了一个客户操作记录软件,即在软件运行过程中,用户在键盘上的按键操作会被记录下来,这样对维护软件的正常运行非常有利。
只要启动客户操作记录软件后,不管输入焦点是否在本软件上,按键都会被记录下来。
我们需要的是键盘的系统监控,只要本软件在运行,无论当前计算机在做什么,都能监测到用户按键的行为并做出反应,这就要用到Hook技术。
MFC中文件操作、查找与选择总结
MFC总结(一):MFC中文件操作、查找与选择总结(1)本文主要涉及以下几个方面,均为在MFC编程中较为常用的:CFile操作、CArchive操作、如何选择文件和文件夹、如何查找文件、获取当前目录、_access函数等。
(一)使用CFile类操作文件CFile类在MFC的文件操作中应该是最常用的了。
主要的成员函数有Open、Close、Write、Read、Seek、SeekToEnd、GetLength、GetPosition,具体用法见MSDN。
(1)文件打开操作:文件打开有两种方式,一种是先定义类对象,在用Open函数打开;一种是在定义类对象时传入文件名和打开方式。
分别如下CFile file;if(!file.Open(lpszFileName, nOpenFlags ))return;或CFile file(lpszFileName, nOpenFlags);(2)文件打开方式:文件打开方式,即上述nOpenFlags的值主要由一些宏定义的值组合而成,具体见MSDN,常用的有如下几种:A. CFile::modeCreate | CFile::modeNoTruncate |CFile::modeWrite,以写文件的方式打开,如果文件不存在,则新建文件,否则打开已有文件进行写入操作,此时不会清空原有文件;B. 将上述CFile::modeWrite更换为CFile::modeRead或者CFile::modeReadWrite可实现读操作或者同时读写。
(3)判断文件结束判断文件是否结束,没有结束则继续读取,否则关闭退出。
这点在编程时常用。
对于CFile常用的判断文件结束的方法是:while(file.GetPosition() < file.GetLength()){ //文件未结束//Add code ....}(4)值得注意的几点:A. 当文件名中包含路径时,要注意使用\\,如C:\\MyFile.DAT,在Unicode下时,需要使用_T("C:\\MyFile.DAT");B. 采用(2)中A方式写文件时,注意使用file.SeekToEnd()将文件指针移至文件尾,再写入,否则会覆盖已有的数据,这点经常被很多初学者忽视;C. 在打开文件后就要紧接着写下Close,养成这样的习惯,避免忘记关闭文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);
}
}
else
{
//不能复制文件
return;
}
if (!FindNextFile(hSearch, &FileData))
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 (!fFinished)
{
lstrcpy(szNewPath, szDirPath);
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
{
return;
}
while (!fFinished)
{
lstrcpy(szNewPath, szDirPath);
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE))
{
dwAttrs = GetFileAttributes(FileData.cFileName);
//使用strTempA中的内容.
}
10.读取文件属性
dwAttrs = GetFileAttributes(%%1);
if (dwAttrs & FILE_ATTRIBUTE_READONLY) {
%%2
}
if (NORMAL & FILE_ATTRIBUTE_READONLY){
%%3
}
11.写入属性
{
mFile.Read(sRead,1024);
CString %%2=CString(sRead);
%%3
}
8.写入文件
CFile mFile(_T(%%1), CFile::modeWrite|CFile::modeCreate);
mFile.Write(%%2,sizeof(%%2));
mFile.Flush();
lstrcat(szNewPath, FileData.cFileName);
if (CopyFile(FileData.cFileName, szNewPath, FALSE)) {
dwAttrs = GetFileAttributes(FileData.cFileName);
if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) {
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
//遍历文件夹完成
fFinished = TRUE;
}
else
{
//找不到下一个文件
return;
}
}
}
FindClose(hSearch);
RemoveDirectory(%%1);
作者:无尾兽零号机
2009-5-31 14:56回复此发言
5.删除一个目录下所有的文件夹
CFileFind finder;
BOOL bWorking = finder.FindFile(%%1+"\\*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDirectory())
mFile.Close();
作者:无尾兽零号机
2009-5-31 14:56回复此发言
2
回复:MFC文件操作大全
9.写入随机文件
char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];
GetTempPath(_MAX_PATH, szTempPath);
GetTempFileName(szTempPath,_T ("my_"),0,szTempfile);
{
dir.Delete(finder.GetFilePath());
}
}
6.清空文件夹
RemoveDirectory(%%1);
CreateDirectory(%%1,NULL)
7.读取文件
char sRead[1024];
CFile mFile(_T(%%1),CFile::modeRead);
while (sRead!=null)
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
//遍历文件夹完成
fFinished = TRUE;
}
else
{
//找不到下一个文件
return;
}
}
}
FindClose(hSearch);
}
}
作者:无尾兽零号机
2009-5-31 14:56回复此发言
4
回复:MFC文件操作大全
c:\\usefile\\usefile.ini);
}
strTemp.Format("%d",nCount);
::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");
//将文件总数写入,以便读出.
int nCount=6;
//共有6个文件名需要保存
for (i=0;i{strTemp.Format("%d",i);
strTempA=文件名;
//文件名可以从数组,列表框等处取得.
::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,
if(finder.IsDirectory()){
hSearch = FindFirstFile(finder.GetFilePath()+"\\*.*", &FileData);
1.创建文件夹
CreateDirectory(%%1,NULL);
2.创建文件
CFile file;
file.Open(%%1,CFile::modeCreate|CFile::modeWrite);
3.删除文件
DeleteFile(%%1);
4.删除文件夹
RemoveDirectory(%%1);
//不能创建新的目录
return;
}
hSearch = FindFirstFile(%%1+"\\*.*", &FileData);
if (hSearch == INVALID_HANDLE_VALUE) {
return;
}
while (!fFinished) {
lstrcpy(szNewPath, szDirPath);
bWorking = finder.FindNextFile();
if(finder.IsDirectory()){
CString %%1=finder.GetFilePath();
%%2
}
}
作者:无尾兽零号机
2009-5-31 14:56回复此发言
3
回复:MFC文件操作大全
13.复制文件夹
WIN32_FIND_DATA FileData;
if (!(dwAttrs & FILE_ATTRIBUTE_READONLY))
{
SetFileAttributes(szNewPath,
dwAttrs | FILE_ATTRIBUTE_READONLY);}Βιβλιοθήκη }else{
//不能复制文件
return;
}
if (!FindNextFile(hSearch, &FileData))
//遍历文件夹完成
fFinished = TRUE;
}
else {
//找不到下一个文件
return;
}
}
}
FindClose(hSearch);
14.复制一个文件夹下所有的文件夹到另一个文件夹下
WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
while (bWorking)
{
bWorking = finder.FindNextFile();
if(finder.IsDirectory()){
hSearch = FindFirstFile(finder.GetFilePath()+"\\*.*", &FileData);