《MFC-txt文件读写.docx》由会员分享,可在线阅读,更多相关《MFC-txt文件读写.docx(12页珍藏版)》请在第壹文秘上搜索。
1、文本文件的读写正确的文本文件读写过程1.定义文件变&2.打开指定的文件:3.向从文本文件中3人信息:4.从文本文件中也取信息:5.关闭文件1、定义文件交定义文件变出格式:CStdioFiIe文件变1ft:例如,定义一个名称为fl的文件变量,语句如下:CStdioFiIefl:2、打开指定文件可以干脆通过CStdioFile的构造函数来打开磁盘文件,同时UJ以用标记位指定打开方式(只读、只写、读写等):CStdioFile(1.PCTSTRIpszAIeName1UINTnOpenFlags):其中,IPSZFMName表示要打开的文件名,可以是相对路径或肯定路径nOpenFlags设置文件打开
2、方式标记位,可以指定用T连接多个标记位.下面是常用的打开标记:CFileirtypeText:以文本文件的形式打开文件CFiIerlypeBinary:以二进制文件的形式打开文件CFiIeumodeCreate:假如指定文件名的文件不存在,则新隹文件:便如文件存在并且没有设置CFiIerimodeNoTruncatG标记.则清空文件.CFiIeimodeNOTrUnCate:假如文件存在,不把它的长度删除为0即不清空文件中的数据).:以只读方式打开文件CFile:mod0ReadWritG:以可读可写方式打开文件CFile:modeWrite:以只写方式打开文件CFile-ShareDenyN
3、one:文件打开后,不禁止其他进程对文件的读写操作CFileirshareExclusive:文件打开后,禁止其他进程对文件的读写操作CFileiishareDenyRead:文件打开后,禁止其他进程对文件的读操作CFiIe:ShareDenyWrite:文件打开后,禁止其他进程对文件的写操作此外,可以不在构造函数中打开文件,而仅仅调用空的构造函数CStid。印e().然后用CStdiOFile:0Peno打开文件Open函数的前两个参数和非空构造函数的参数相同.其声明如下:BOO1.Open(1.PCTSTRIpszFilGName1UINTnOpenFlags.CFileException
4、*pEaor=NU1.1.);第3个参数与打开失败时的异样处理有关.实例1,以只读方式打开一个文件步骤:运用APPWiZard创建一个对话框应用程序,捌除其自动产生的全部控件,添加一个BUtton控件。双击控件,在相应的函数里添加代码:charPSZFiIeName=Cmyfile.txt;CStdioFiIemyFile;CFiIeExceptionfileException;if(!myFile.Open(pszFileName,CFile:modeCreate|CFile:typeText|CFile:modeRead),&fileException)(TRACE(Cantopenfil
5、e%s,error=%un,pszFileName,fileExcepiion.m_cause);)运行结果:假如C八卜.没有myle.txt文件,则新生成该文件。3 .向从文本文件中写入信息CStdioFile供应了函数WmeSmng来向文本文件中写入文本.WriieString函数的格式如下:voidWnteSIring(1.PeTSTRIpsz);WriteString的拿数Ipsz是一个以,0”字符结束的字符中,要把这个字符串的内容写入文件Z提示:运用WriteString函数时,假如希望班执行fXWriteString,文本文件中的内容就会自动换行一次,那么就须要在须要换行的地方输出
6、V:myFile.WriteString(第1行Vr):实例2,向文件中写入文本建立MFC基于对话框的程序,删除自动添加的全部控件.浑加一个“确定”按仙双击按钮,按默认添加事务函数,双击按钮,在相应的函数处添加如下代码:char,PszFiIeName=C:myfile.txt;CStdioFitemyFile;CFiIeExceptionfieExcepion;if(myFile.Open(pszFileName,CFile:typeText|CFile:modeCreate|CFile:modeReadWrite),fileException)(myFile.WritString(-,1行
7、俏;CStringStrOrder;strOrder.Format(%d.%.3,66.88.88);myFie.WriteString(strOrder);else(TRACE(Cantopenfile%s,error=%un,pS2FileName,fileException.m-cause);)程序运行结果:C:myfile.txt文件中内容如卜:笫1行66,88.8804 .从文本文件中读取信息CStidoFiIe供应/函数ReadSIring来读取文本.ReadString行两种形式,一种为:virtual1.PTSTRReadString(1.PTSTRIpsz1UINITnMax
8、);ReadString函数的参数如下:Ipsz:是用户供应的一个指向字符中的指针,它用来接受从文件读出的文本,以“0”结束.nMax是本次所允许读入的文本字符个数.不计30字符,也就是说股多能读入nMax1个文本字符ReadSmng的返回值是一个1.PTSTR类型的指针.它指向从文件读出的文本字符串,假如到达文件尾,则返I可NU1.1.-ReadSmng的另种形式为:BOO1.ReadString(CString&rString);参数rString用来容纳从文件读出的文本。CStrin9版本忽视I可车换行符,返I可值是一个布尔值.假如返I可值为FA1.SE,表示因到达文件尾而没有读到任何字
9、符。示:每执行一次ReadStrIng,就会自动从文本文件中读取一行敷福,同时文件绛作指针会自动跳转到下一行实例3,从文件中读取文本信息步联:创建基于对话框的MFC程序,刷除全部自动添加的控件,添加按钮控件,为按铀添加货务,并在相应的函数处,添加如下代码;char*PszFiIeName=CAmyfile.tt;CStdioFiIemyFile;CFiIeExceptionfileException;if(myFile.Open(pszFileName.CFile:typeText|CFile::modeReadWrite),&fileException)(myFile.SeekToBegin
10、f);CStringstrl;myFile.ReadString(str1);CStringStr2;myFile.ReadString(str2):AfxMessageBoxfstrI+str2):)elseTRACE(Cantopenfile%s,error=%un,pszFiteName.fileException.m-cause);myFile.Cose();5 .关闭文件对文件的操作完成后,届用CIoseFile关闭文件.函数CStdiOFile:CIoSe关闭一个文件,一般一个文件运用完毕就应当关闭它:myFile.Cose();错提的文本文件读写过程在读写文本文件的时候,鼠常见的
11、错误是一操作文件不存在,这种错误产生的典型缘由彳r:1.路径错误char,PszFiIeName=nCiWWindowsWMyFile.txf;CStdioFiIemyFile;CFiIeExceptionfileException;if(!myFile.Open(pszFileName.CFile:modeCreate|CFile:typeText|CFile:modeReadowsDirectory(lpBuffer,MAX_PATH);strcat(lpBuffer,VMyFile.txt):CStdioFiIemyFile;CFiIeExceptionfileException;if(
12、myFile.Open(lpBuffer,CFile:typeText|CFile:modeCreate|CFile:modeReadWrite),&tileException)文件操作代码else(TRACE(Cantopenfile%s,error=%un,pszFileName,fileException.m.cause);myFile.Close();由于将文件变盘马一个肯定路径的文件名为联,而程序的数据通常存储在相时路径下,所以一旦相对路径和相劝路径不一样时,就会出忸.举例而言,上一段程序本意是想从windows的安装书目下面的MyTextFiIelxt文件中读取一行数据,但是黄如操
13、作系统安装的路径不是C:Windwos,11jC:Winnt,那么这段程序就会出怫.解决方法是在程序中运用相对路径,改正后的程序如F:获得windows路径1.PTSTRIPBUffer=newcharMAPATH;:GetWindowsDirectory(lpBuffer.MAX_PATH);strcat(lpBuffer,MyRle.txt);CStdioFifemyFie;CFiIeExceptionIiIeException;if(myFile.Open(lpBuffer,CFile:typeText|CFile:modeCreate|CFile:modeReadWrite),&fil
14、eEcetion)文件操作代码else(TRACE(Cantopentile%s.error=%un,pszFileName.fileException.m_cause);)CStringStrFiIeTitIe=MyFiIe.txt;CStdioFiIemyFile;CFiIeExceptionfileException;if(myFile.Open(strFileTitle,CFile:typeText|CFile:modeReadWrite),&*ileException)(文件操作代码myFile.WriteStringff测试!):1else(TRACE(Cantopentile%s.error=