本文主要是介绍【MFC】CFile 之 CFile::modeNoTruncate参数的用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MFC编程时,经常需要用如下方式操作文件:打开某一个文件,如果存在则追加,如果不存在则创建。
查看MSDN帮助文件,CFile类中CFile::modeNoTruncate参数具备该功能,该参数一般与CFile::modeCreate参数配合使用。
CFile::modeNoTruncate 该值一般modeCreate组合使用。如果创建的文件已经存在,那么它不会被清零。因而该文件能可靠的打开,或者新建一个文件或者打开一个现存文件。这对于打开一个可能存在可能不存在的设置文件十分有用。该选项通用可用于CStdioFile。
实际使用时,追加往往没有成功。是什么原因呢?难道这个参数只是微软说说而已?下面给出解决该类问题的小技巧,并附上代码:
h文件
public: CStdioFile m_cfLogFile;protected:static CString m_strSeparate;
cpp文件
CString CLog::m_strSeparate = _T("\r\n");
if (!m_cfLogFile.Open(strLogFileName, CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate, NULL))
{return false;
}//
m_cfLogFile.SeekToEnd();
m_cfLogFile.WriteString("\r\n");
m_cfLogFile.WriteString("\r\n");
m_cfLogFile.WriteString("\r\n");
m_cfLogFile.WriteString(m_strSeparate);
m_cfLogFile.WriteString(m_strSeparate);
m_cfLogFile.WriteString(m_strSeparate);
原来文件已经按追加方式打开了,只是被你覆盖了而已,注意SeekToEnd()函数位置。
这篇关于【MFC】CFile 之 CFile::modeNoTruncate参数的用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!