使用MFC的CFile文件类和CArchive串行化类进行二进制文件读写操作演示案例
2014-04-22 11:42
417 查看
一 编程案例介绍
本案例基于控制台工程,创建专门的演示类CDemo,实现二进制文件的读写串行化操作,具体代码如下:
1 CDemo类定义:
class CDemo
{
public:
void CreateFile();
CDemo();
virtual ~CDemo();
void Serialize(CArchive &ar);
void WriteFile();
void ReadFile();
void Initlize();//初始化
private:
//需要读写的演示数据:
//基本类型数据
int nYear;
char chMonth;
short shDay;
float fSalary;
//字符串数据
CString m_strUserName;
CString m_strPassWord;
//文件相关的数据:
CString m_strFileName;//文件名
};
2 CDemo类接口实现定义:
CDemo::CDemo()
{
//读写的文件名称
m_strFileName = "data.dat";
}
CDemo::~CDemo()
{
}
//文件读写串行化函数
void CDemo::Serialize(CArchive &ar)
{
if (ar.IsStoring())
{
//写变量的数据到文件
ar<<nYear;
ar<<chMonth;
ar<<shDay;
ar<<fSalary;
ar<<m_strUserName;
ar<<m_strPassWord;
}
else
{
//读文件内容并保存到变量:
ar>>nYear;
ar>>chMonth;
ar>>shDay;
ar>>fSalary;
ar>>m_strUserName;
ar>>m_strPassWord;
}
}
//数据写文件
void CDemo::WriteFile()
{
CFile file;
if(file.Open(m_strFileName, CFile::modeWrite, NULL))//创建磁盘文件并打开
{
CArchive ar(&file, CArchive::store);//根据打开的文件,创建文件串行化对象
Serialize(ar); //写文件内容
//结束后关闭对象
ar.Close();
file.Close();
}
}
//从文件上读数据
void CDemo::ReadFile()
{
CFile file;
if(file.Open(m_strFileName, CFile::modeRead, NULL))//打开磁盘文件
{
CArchive ar(&file, CArchive::load);//根据打开的文件,创建文件串行化对象
Serialize(ar); //读文件内容
//结束后关闭对象
ar.Close();
file.Close();
}
}
//数据初始化:
void CDemo::Initlize()//初始化
{
//初始化演示数据
nYear = 2010;
chMonth = 12;
shDay = 31 ;
fSalary = 10000.0;
m_strUserName = "张三";
m_strPassWord = "12345";
}
//创建二进制文件
void CDemo::CreateFile()
{
CFile file;
if(file.Open(m_strFileName, CFile::modeCreate, NULL))//创建磁盘文件并打开
{
file.Close();
}
}
二 读写二进制文件的演示代码
注:需要在VC++6.0环境下生成支持MFC的控制台工程!
下面蓝色部分是演示代码,经过调试测试,可以正确运行:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
nRetCode = 1;
}
else
{
//演示文件读写:
CDemo demo1;//对象构造
demo1.Initlize();//初始化数据
//demo1.CreateFile(); //创建文件--第一次调用创建文件,后续可以把这行代码注释掉都可以。
demo1.WriteFile(); //写文件内容
CDemo demo2;//对象构造
demo2.ReadFile(); //从文件读数据,初始化对象Demo2的成员数据
}
return nRetCode;
}
本案例基于控制台工程,创建专门的演示类CDemo,实现二进制文件的读写串行化操作,具体代码如下:
1 CDemo类定义:
class CDemo
{
public:
void CreateFile();
CDemo();
virtual ~CDemo();
void Serialize(CArchive &ar);
void WriteFile();
void ReadFile();
void Initlize();//初始化
private:
//需要读写的演示数据:
//基本类型数据
int nYear;
char chMonth;
short shDay;
float fSalary;
//字符串数据
CString m_strUserName;
CString m_strPassWord;
//文件相关的数据:
CString m_strFileName;//文件名
};
2 CDemo类接口实现定义:
CDemo::CDemo()
{
//读写的文件名称
m_strFileName = "data.dat";
}
CDemo::~CDemo()
{
}
//文件读写串行化函数
void CDemo::Serialize(CArchive &ar)
{
if (ar.IsStoring())
{
//写变量的数据到文件
ar<<nYear;
ar<<chMonth;
ar<<shDay;
ar<<fSalary;
ar<<m_strUserName;
ar<<m_strPassWord;
}
else
{
//读文件内容并保存到变量:
ar>>nYear;
ar>>chMonth;
ar>>shDay;
ar>>fSalary;
ar>>m_strUserName;
ar>>m_strPassWord;
}
}
//数据写文件
void CDemo::WriteFile()
{
CFile file;
if(file.Open(m_strFileName, CFile::modeWrite, NULL))//创建磁盘文件并打开
{
CArchive ar(&file, CArchive::store);//根据打开的文件,创建文件串行化对象
Serialize(ar); //写文件内容
//结束后关闭对象
ar.Close();
file.Close();
}
}
//从文件上读数据
void CDemo::ReadFile()
{
CFile file;
if(file.Open(m_strFileName, CFile::modeRead, NULL))//打开磁盘文件
{
CArchive ar(&file, CArchive::load);//根据打开的文件,创建文件串行化对象
Serialize(ar); //读文件内容
//结束后关闭对象
ar.Close();
file.Close();
}
}
//数据初始化:
void CDemo::Initlize()//初始化
{
//初始化演示数据
nYear = 2010;
chMonth = 12;
shDay = 31 ;
fSalary = 10000.0;
m_strUserName = "张三";
m_strPassWord = "12345";
}
//创建二进制文件
void CDemo::CreateFile()
{
CFile file;
if(file.Open(m_strFileName, CFile::modeCreate, NULL))//创建磁盘文件并打开
{
file.Close();
}
}
二 读写二进制文件的演示代码
注:需要在VC++6.0环境下生成支持MFC的控制台工程!
下面蓝色部分是演示代码,经过调试测试,可以正确运行:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
nRetCode = 1;
}
else
{
//演示文件读写:
CDemo demo1;//对象构造
demo1.Initlize();//初始化数据
//demo1.CreateFile(); //创建文件--第一次调用创建文件,后续可以把这行代码注释掉都可以。
demo1.WriteFile(); //写文件内容
CDemo demo2;//对象构造
demo2.ReadFile(); //从文件读数据,初始化对象Demo2的成员数据
}
return nRetCode;
}
相关文章推荐
- 使用MFC的CFile文件类和CArchive串行化类进行二进制文件读写操作
- C++ MFC CFile 文件使用案例 读写文件 图像
- 使用VC++6.0 MFC OLE操作Excel 进行简单的读写
- python使用codecs模块进行文件操作-读写中英文字符
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作
- java 如何使用缓冲区对文件进行读写操作
- 使用C#对Excel进行读写操作(NPOI)以及使用EF对Mysql进行CURD
- 使用Octave音频处理(一):对文件进行读写操作
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-复杂业务的实现(商品入库)-附案例操作视
- C语言进行二进制文件的读写操作(fopen,fwrite,fread)
- Openwrt使用lua进行串口通信读写操作
- 使用Python对Excel进行读写操作
- MFC中使用ADO进行数据库操作 参考FROM:http://hi.baidu.com/sunkanghome/item/e1fda510b3186359f1090ee2 数据库与数据库编程: 当
- 本文演示如何创建和使用自动化操作从 Visual c + +.net 和 Microsoft 基础类 (MFC) Word 文档
- 演示基于用户进行流复制案例-可以同步用户的DDL操作
- python使用codecs模块进行文件操作-读写中英文字符
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
- C# 向二进制文件进行读写操作
- MFC使用CFile读写Unicode字符集文件
- node.js 使用fs模块对系统文件及目录进行读写操作