亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關(guān)軟件
    >Visual C++程序設(shè)計(jì)中的文件操作 創(chuàng)建者:webmaster 更新時(shí)間:2005-07-02 01:24

    各種關(guān)于文件的操作在程序設(shè)計(jì)中十分常見(jiàn),如果能對(duì)這些操作都了如指掌,就可以根據(jù)實(shí)際情況找到最佳的解決方案,從而可以在較短的時(shí)間內(nèi)編寫(xiě)出高效的代碼。本文對(duì)Visual C++中有關(guān)文件操作進(jìn)行了全面的介紹,并對(duì)在文件操作中經(jīng)常遇到的一些疑難問(wèn)題進(jìn)行了詳細(xì)分析。

       1. 文件的查找

      當(dāng)對(duì)一個(gè)文件操作時(shí),如果不知道該文件是否存在,就要首先進(jìn)行查找。MFC中有一個(gè)專(zhuān)門(mén)用來(lái)進(jìn)行文件查找的類(lèi)“CFileFind”,使用它可以方便快捷地進(jìn)行文件的查找。下面這段代碼演示了這個(gè)類(lèi)的最基本使用方法。





    CString strFileTitle;
    CFileFind finder;
    BOOL bWorking = finder.FindFile(“C:\\windows\\sysbkup\\*.cab”);
    while(bWorking)
    {
     bWorking=finder.FindNextFile();
     strFileTitle=finder.GetFileTitle();
    }

      2. 文件的打開(kāi)/保存對(duì)話框

      讓用戶選擇文件進(jìn)行打開(kāi)和存儲(chǔ)操作時(shí),就要用到文件打開(kāi)/保存對(duì)話框。MFC的類(lèi)“CFileDialog”用于實(shí)現(xiàn)這種功能。使用“CFileDialog”聲明一個(gè)對(duì)象時(shí),第一個(gè)BOOL型參數(shù)用于指定文件的打開(kāi)或保存,當(dāng)為T(mén)RUE時(shí)將構(gòu)造一個(gè)文件打開(kāi)對(duì)話框,為FALSE時(shí)構(gòu)造一個(gè)文件保存對(duì)話框。

      在構(gòu)造“CFileDialog”對(duì)象時(shí),如果在參數(shù)中指定了“OFN_ALLOWMULTISELECT”風(fēng)格,則在此對(duì)話框中可以進(jìn)行多選操作。此時(shí)要重點(diǎn)注意為此“CFileDialog”對(duì)象的“m_ofn.lpstrFile”分配一塊內(nèi)存,用于存儲(chǔ)多選操作所返回的所有文件路徑名,如果不進(jìn)行分配或分配的內(nèi)存過(guò)小就會(huì)導(dǎo)致操作失敗。下面這段程序演示了文件打開(kāi)對(duì)話框的使用方法。





    CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_HIDEREADONLY|OFN_OVER
    WRITEPROMPT|OFN_ALLOWMULTISELECT,“All Files (*.*)|*.*| |”, AfxGetMainWnd());
    CString str(“ ”, 10000);
    mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
    str.ReleaseBuffer();
    POSITION mPos=mFileDlg.GetStartPosition();
    CString pathName(“ ”, 128);
    CFileStatus status;
    while(mPos!=NULL)
    {
     pathName=mFileDlg.GetNextPathName(mPos);
     CFile::GetStatus(pathName, status);
    }

       3. 文件的讀寫(xiě)

      文件的讀寫(xiě)非常重要,下面將重點(diǎn)進(jìn)行介紹。文件讀寫(xiě)最普通的方法是直接使用“CFile”類(lèi)進(jìn)行,如文件的讀寫(xiě)可以使用下面的方法:





    //對(duì)文件進(jìn)行讀操作
    char sRead[2];
    CFile mFile(_T(“user.txt”),CFile::modeRead);
    if(mFile.GetLength()<2)
     return;
    mFile.Read(sRead,2);
    mFile.Close();
    //對(duì)文件進(jìn)行寫(xiě)操作
    CFile mFile(_T(“user.txt”), CFile::modeWrite|CFile::modeCreate);
    mFile.Write(sRead,2);
    mFile.Flush();
    mFile.Close();

      雖然這種方法最為基本,但是它使用煩瑣,而且功能非常簡(jiǎn)單。這里推薦的是使用“CArchive”,它的使用方法簡(jiǎn)單且功能十分強(qiáng)大。首先還是用“CFile”聲明一個(gè)對(duì)象,然后用這個(gè)對(duì)象的指針做參數(shù)聲明一個(gè)“CArchive”對(duì)象,這樣就可以非常方便地存儲(chǔ)各種復(fù)雜的數(shù)據(jù)類(lèi)型了。它的使用方法見(jiàn)下例:





    //對(duì)文件進(jìn)行寫(xiě)操作
    CString strTemp;
    CFile mFile;
    mFile.Open(“d:\\dd\\try.TRY”,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite);
    CArchive ar(&mFile,CArchive::store);
    ar<<strTemp;
    ar.Close();
    mFile.Close();
    //對(duì)文件進(jìn)行讀操作
    CFile mFile;
    if(mFile.Open(“d:\\dd\\try.TRY”,CFile::modeRead)==0)
     return;
    CArchive ar(&mFile,CArchive::load);
    ar>>strTemp;
    ar.Close();
    mFile.Close();

       “CArchive”的“<<”和“>>”操作符用于簡(jiǎn)單數(shù)據(jù)類(lèi)型的讀寫(xiě),對(duì)于“CObject”派生類(lèi)的對(duì)象的存取要使用ReadObject()和WriteObject()。使用“CArchive”的ReadClass()和WriteClass()還可以進(jìn)行類(lèi)的讀寫(xiě),如:





    //存儲(chǔ)CAboutDlg類(lèi)
    ar.WriteClass(RUNTIME_CLASS(CAboutDlg));
    //讀取CAboutDlg類(lèi)
    CRuntimeClass*mRunClass=ar.Read
    Class();
    //使用CAboutDlg類(lèi)
    CObject* pObject=mRunClass->CreateObject();
    ((CDialog* )pObject)->DoModal();

      雖然VC提供的文檔/視結(jié)構(gòu)中的文檔也可進(jìn)行這些操作,但是不容易理解、使用和管理,如果要進(jìn)行的文件操作只是簡(jiǎn)單的讀寫(xiě)整行的字符串,建議使用“CStdioFile”,用它來(lái)進(jìn)行此類(lèi)操作非常方便,如下例:





    CStdioFile mFile;
    CFileException mExcept;
    mFile.Open( “d:\\temp\\aa.bat”, CFile::modeWrite, &mExcept);
    CString string=“I am a string.”;
    mFile.WriteString(string);
    mFile.Close();

      4.臨時(shí)文件的使用

      正規(guī)軟件經(jīng)常用到臨時(shí)文件,經(jīng)??梢钥吹健癈:\Windows\Temp”目錄下有大量的擴(kuò)展名為“.tmp”的文件,這些就是程序運(yùn)行時(shí)建立的臨時(shí)文件。臨時(shí)文件的使用方法基本與常規(guī)文件一樣,只是文件名應(yīng)該調(diào)用函數(shù)GetTempFileName()獲得。它的第一個(gè)參數(shù)是建立此臨時(shí)文件的路徑,第二個(gè)參數(shù)是建立臨時(shí)文件名的前綴,第四個(gè)參數(shù)用于得到建立的臨時(shí)文件名。得到此臨時(shí)文件名以后,就可以用它來(lái)建立并操作文件了,如:





    char szTempPath[_MAX_PATH],szTempfile[_MAX_PATH];
    GetTempPath(_MAX_PATH, szTempPath);
    GetTempFileName(szTempPath,_T (“my_”),0,szTempfile);
    CFile m_tempFile(szTempfile,CFile:: modeCreate|CFile:: modeWrite);
    char m_char=‘a(chǎn)’;
    m_tempFile.Write(&m_char,2);
    m_tempFile.Close();

      5.文件的復(fù)制、刪除等

      MFC中沒(méi)有提供直接進(jìn)行這些操作的功能,因而要使用SDK。SDK中的文件相關(guān)函數(shù)常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它們的用法很簡(jiǎn)單,可參考MSDN。

    相關(guān)文章
    本頁(yè)查看次數(shù):