CFile和CStdioFile 的使用方法
发布时间:2023-02-02 17:01:18
CStdioFile类的声明保存在afx.h头文件中。CStdioFile类继承自CFile类,CStdioFile对象表示一个用运行时的函数fopen打开的c运行时的流式文件。流式文件是被缓冲的,而且可以以文本方式(默认)或者二进制方式打开。注:CStdioFile类不支持CFile类中的Duplicate、LockRange、UnlockRange函数,如果你使用了,会得到CNotSupportedException类的错误。CStringFile类默认的是按照Text模式操作文件。CFile类默认的是按照二进制模式操作文件。二进制模式和Text模式的区别:二进制模式:对于一行的结尾我们必须输入”\r\n”,才能表示回车换行的效果。Text模式:”\r”回车的工作是自动完成的,我们只需要写入”\n”即可。所以我们再使用文本模式时要主要,当我们从外部读入文件时,”\r\n”会被翻译成”\n”,写入文件时,我们对于回车换行只需提供”\n”,即可,”\r\n”会被写入到文件中。构造函数:CStdioFile(;CStdioFile(FILE*pOpenStream;CStdioFile(LPCTSTRlpFileName,UINTnOpenFlags;throw(CFileException;参数说明:FILE*pOpenStream:指的是c运行函数fopen调用后返回的文件指针。LPCTSTRlpFileName:指的是被打开的文件(绝对地址或相对地址)UINTnOpenFlags:指的是CFile类中所描述的打开文件的方式。virtualLPTSTRReadString(LPTSTRlpsz,UINTnMax;throw(CFileException;如果使用该函数读取文本文件,当遇到”\r\n”,停止读取,并去掉”\r”,保留”\n”,并在字符串尾部增加”\0”,nMax的长度包含有”\0”字符,实际的分析如下:如果nMax<=字符数,读取(nMax-1个字符+0x00;如果nMax=字符数+1,读取nMax个字符+0x00;如果nMax>字符数,读取nMax个字符+0x0A(”\n”+0x00;如果文件有多行,则当文件没有读完时,返回NOTNULL,读到文件尾,返回NULL>>>>。BOOLReadString(CString&rString;throw(CFileException;读取一行文本到rString中,遇到回车换行符停止读取,回车和换行符均不读到rString中,尾部也不添加”0x00”。如果文件有多行,则当文件没有读完时,返回TRUE,读到文件尾,返回FALSE。virtualvoidWriteString(LPTSTRlpsz;throw(CFileException;1
将缓冲区中的数据写入到与CStdioFile对象相关联的文件中,不支持CString类型数据写入,结束的”\0”不被写入到文件中,lpsz缓冲区中的所有换行符被替换为回车换行符即”\n”转换为”\r\n”。CStdioFileCStdioFile是CFile的派生类,对文件进行流式操作,对于文本文件的读写很有用处,可按行读取写入。//写入数据CStringstrValue="HelloWorld!";file.WriteString(strValue;//读取数据CStringstrRead;file.ReadString(strRead;当文件存在多行数据需要逐行读取时,可用函数BOOLCStdioFile::ReadString(CString&rString,当遇到"\n"时读取截断,如果文件未读完,返回true