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 );
}
说道文件读写,有很多方法,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 );
}
相关文章推荐
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- c++ 文件读写简单示例
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- c++ 读写复合文件简单例子
- C++ 读写文件,格式化输出到文件的简单代码
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- c++的一种配置文件读写封装——HDF5 DSM
- c++简单读写文本,统计文件的行数,读取文件数据到数组
- C++文件简单的读写操作实例
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- Qt读写文件的简单封装
- c++ 实现对配置文件的读写 根据windows API 函数简单改写
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- 一个跨平台c++封装的.ini文件读写类
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- 练习写C++代码(101)--简单的文件以及 .gz文件的读写
- C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组