使用 CFile 的子类 CStdioFile 的注意事项 2

Posted jansn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 CFile 的子类 CStdioFile 的注意事项 2相关的知识,希望对你有一定的参考价值。

昨天使用Open是因为不熟悉mode而浪费了时间,所以这里记录一下。

需求是文件如果存在则直接打开,文件如果不存在则新建。

一开始直接这样写的:

CString strPath, strReadLine;
TCHAR PathPro[256] = {0};
GetCurrentDirectoryW(256,PathPro);              //PathPro :current path
strPath = CString(PathPro)+_T("\") + FileName; //strPath :absolute path

CStdioFile cfile;
cfile.Open(strPath,CFile::modeCreate|CFile::modeReadWrite);    
while(cfile.ReadString(strReadLine))
{
    ...
}

效果是文件如果存在则直接清空,后来又认真看了一下每种mode的用法。

modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。

modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。一般与CFile::modeCreate一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。

modeReadWrite:以读写方式打开文件。

modeRead:只读。

modeWrite:只写。

换成这种方式打开就不会有问题了。

cfile.Open(strPath,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite);

实现效果是文件如果不存在则新建,如果存在则不清空文件以读写方式打开。

 

以上是关于使用 CFile 的子类 CStdioFile 的注意事项 2的主要内容,如果未能解决你的问题,请参考以下文章

MFC文件的读写操作,类的序列化与反序列化,CFile,CFileDialog,CArchive,CStdioFile

如何使用 CStdioFile 读取文本文件的最后 10 行

如何用c语言实现上传文件

如何将文件描述符(int fd)转换为文件指针(FILE * fp)

C语言如何用FtpPutFile()函数上传文件到Ftp服务器!下载用FtpGetFile()可以!

如何在MFC中读取txt文件中的数据