您的位置:首页 > 编程语言 > C语言/C++

C++ 读写文件的简单封装

2014-07-14 11:40 197 查看
原创文章,不得转载!

说道文件读写,有很多方法,MFC封装的有,C++的流文件读写,但是这里说的其实是C语音对文件的读写封装,fopen,fwrite,fread,fclose;

这几个函数很简单,同时也很强大,速度很快;一般建议用这类方法读写文件;

1:一般,如果想直接写文件,例子:

FILE * f = fopen(pstr,"w+b");

fwrite( Buf, 1, nLen, f );

fclose(f);

这个方式是将一定内容写到文件中,但是如果文件存在会删除文件重新写pBuf到新得文件;

2:如果想追加写文件,一般的方法是:

FILE * f = fopen(pstr,"a+b");

fwrite( Buf, 1, nLen, f );

fclose(f);

这样,如果文件存在,会将Buf写到文件的后面,不会销毁文件;

3:在一般程序调试的时候,我们在写文件,希望在程序的运行过程中文件一直追加写,当程序再次运行的时候重新写新的文件追加写;

例如,写一个录音程序,启动程序,追加方法写录音;关闭程序;再次打开程序删除上次写的音频文件重新写追加文件录音;

一般的的解决方法是:

用方法2,追加写文件,程序运行关闭后,再次启动程序前,删除上次的文件,否则这次的内容会继续添加到上次的文件后面;

推荐解决方法:

fopen 的 “w+b”,方法, 当不关闭文件指针(fclose(f);)一直用fwrite,可以将文件一直写到文件后面,当重新fopen,a+b的时候文件重新建立;

所以可以将 文件指针“f”设置问全局变量,或者成员变量,但是这样就有些麻烦而且;

所以程序可以写成;

{

static FILE * f = fopen(pstr,"w+b");

fwrite( Buf, 1, nLen, f );

}

这样,在程序重新启动之前 文件指针一直保存,所以可以一直追加写文件,当程序重新启动执行到这里的时候,又会删除上次文件重新写追加文件;

这样写,还是有点麻烦,因为每次都要写相同的代码,但是,目的就是将一定长处的内容写到文件中,所以在简化上述代码:

#define DebugWriteFile( pstr, Buf, nLen ) { static FILE * f = fopen(pstr,"w+b"); fwrite( Buf, 1, nLen, f ); }

void CDlg::OnBnClickedButton()

{

char ch1[10] = "12345 ";

DebugWriteFile("DebugWriteFile1.dat", ch1, 10 );

char ch2[10] = "67890 ";

DebugWriteFile("DebugWriteFile2.dat", ch2, 10 );

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: