使用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();
       
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章