使用MFC的CFile文件類和CArchive串行化類進行二進制文件讀寫操作
一 編程案例介紹
本案例基於控制檯工程,創建專門的演示類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();
本案例基於控制檯工程,創建專門的演示類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();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.