VC中的文件讀寫操作.doc_第1頁
VC中的文件讀寫操作.doc_第2頁
VC中的文件讀寫操作.doc_第3頁
VC中的文件讀寫操作.doc_第4頁
VC中的文件讀寫操作.doc_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

VC中的文件讀寫操作各種關(guān)于文件的操作在程序設(shè)計中是十分常見,如果能對其各種操作都了如指掌,就可以根據(jù)實際情況找到最佳的解決方案,從而在較短的時間內(nèi)編寫出高效的代碼,因而熟練的掌握文件操作是十分重要的。本文將對Visual C+中有關(guān)文件操作進(jìn)行全面的介紹,并對在文件操作中經(jīng)常遇到的一些疑難問題進(jìn)行詳細(xì)的分析。1文件的查找 當(dāng)對一個文件操作時,如果不知道該文件是否存在,就要首先進(jìn)行查找。MFC中有一個專門用來進(jìn)行文件查找的類CFileFind,使用它可以方便快捷地進(jìn)行文件的查找。下面這段代碼演示了這個類的最基本使用方法。 CString strFileTitle;CFileFind finder;BOOL bWorking = finder.FindFile(C:windowssysbkup*.cab);while(bWorking) bWorking=finder.FindNextFile(); strFileTitle=finder.GetFileTitle();2文件的打開/保存對話框 讓用戶選擇文件進(jìn)行打開和存儲操作時,就要用到文件打開/保存對話框。MFC的類CFileDialog用于實現(xiàn)這種功能。使用CFileDialog聲明一個對象時,第一個BOOL型參數(shù)用于指定文件的打開或保存,當(dāng)為TRUE時將構(gòu)造一個文件打開對話框,為FALSE時構(gòu)造一個文件保存對話框。 在構(gòu)造CFileDialog對象時,如果在參數(shù)中指定了OFN_ALLOWMULTISELECT風(fēng)格,則在此對話框中可以進(jìn)行多選操作。此時要重點注意為此CFileDialog對象的m_ofn.lpstrFile分配一塊內(nèi)存,用于存儲多選操作所返回的所有文件路徑名,如果不進(jìn)行分配或分配的內(nèi)存過小就會導(dǎo)致操作失敗。下面這段程序演示了文件打開對話框的使用方法。 CFileDialog mFileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|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文件的讀寫 文件的讀寫非常重要,下面將重點進(jìn)行介紹。文件讀寫的最普通的方法是直接使用CFile進(jìn)行,如文件的讀寫可以使用下面的方法: /對文件進(jìn)行讀操作 char sRead2;CFile mFile(_T(user.txt),CFile:modeRead);if(mFile.GetLength()m_cause); MessageBox(str); file.Abort(); e-Delete();/寫文件數(shù)據(jù)void CFileOperDlg:OnButtonWrite()/ TODO: Add your control notification handler code hereUpdateData();/取文本框字符CFile file;CString FileName=data.txt;try file.Open(FileName,CFile:modeCreate|CFile:modeWrite); file.SeekToBegin(); file.Write(unsigned char *)(m_data.GetBuffer(0),m_data.GetLength();/CString m_data file.Flush(); file.Close(); MessageBox(寫入成功!);catch(CFileException *e) CString str; str.Format(寫入失敗的原因是:%d,e-m_cause); MessageBox(str); file.Abort(); e-Delete();雖然這種方法最為基本,但是它的使用繁瑣,而且功能非常簡單。我向你推薦的是使用CArchive,它的使用方法簡單且功能十分強(qiáng)大。首先還是用CFile聲明一個對象,然后用這個對象的指針做參數(shù)聲明一個CArchive對象,你就可以非常方便地存儲各種復(fù)雜的數(shù)據(jù)類型了。它的使用方法見下例。 /對文件進(jìn)行寫操作 CString strTemp;CFile mFile;mFile.Open(d:ddtry.TRY,CFile:modeCreate|CFile:modeNoTruncate|CFile:modeWrite);CArchive ar(&mFile,CArchive:store);arstrTemp; ar.Close();mFile.Close();CArchive的 操作符用于簡單數(shù)據(jù)類型的讀寫,對于CObject派生類的對象的存取要使用ReadObject()和WriteObject()。使用CArchive的ReadClass()和WriteClass()還可以進(jìn)行類的讀寫,如: /存儲CAboutDlg類 ar.WriteClass(RUNTIME_CLASS(CAboutDlg);/讀取CAboutDlg類 CRuntimeClass* mRunClass=ar.ReadClass();/使用CAboutDlg類 CObject* pObject=mRunClass-CreateObject(); (CDialog* )pObject)-DoModal();雖然VC提供的文檔/視結(jié)構(gòu)中的文檔也可進(jìn)行這些操作,但是不容易理解、使用和管理,因此雖然很多VC入門的書上花費大量篇幅講述文檔/視結(jié)構(gòu),但我建議你最好不要使用它的文檔。關(guān)于如何進(jìn)行文檔/視的分離有很多書介紹,包括非常著名的Visual C+ 技術(shù)內(nèi)幕。 如果你要進(jìn)行的文件操作只是簡單的讀寫整行的字符串,我建議你使用ofstream和ifstream,用它來進(jìn)行此類操作非常方便,如下例。 /寫文件std:ofstream f(m_file_path);fx y z x y z ;/一行行讀4臨時文件的使用 正規(guī)軟件經(jīng)常用到臨時文件,你經(jīng)??梢詴吹紺:WindowsTemp目錄下有大量的擴(kuò)展名為tmp的文件,這些就是程序運行是建立的臨時文件。臨時文件的使用方法基本與常規(guī)文件一樣,只是文件名應(yīng)該調(diào)用函數(shù)GetTempFileName()獲得。它的第一個參數(shù)是建立此臨時文件的路徑,第二個參數(shù)是建立臨時文件名的前綴,第四個參數(shù)用于得到建立的臨時文件名。得到此臨時文件名以后,你就可以用它來建立并操作文件了,如: 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;m_tempFile.Write(&m_char,2);m_tempFile.Close();5文件的復(fù)制、刪除等 MFC中沒有提供直接進(jìn)行這些操作的功能,因而要使用SDK。SDK中的文件相關(guān)函數(shù)常用的有CopyFile()、CreateDirectory()、DeleteFile()、MoveFile()。它們的用法很簡單,可參考MSDN。 CFile 類的使用1顯示對話框,取得文件名CString FilePathName;CFileDialog dlg(TRUE);/TRUE為OPEN對話框,F(xiàn)ALSE為S*E AS對話框if (dlg.DoModal() = IDOK) FilePathName=dlg.GetPathName();相關(guān)信息:CFileDialog 用于取文件名的幾個成員函數(shù):假如選擇的文件是C:WINDOWSTEST.EXE則(1)GetPathName();取文件名全稱,包括完整路徑。取回C:WINDOWSTEST.EXE(2)GetFileTitle();取文件全名:TEST.EXE(3)GetFileName();取回TEST(4)GetFileExt();取擴(kuò)展名EXE2打開文件CFile file(C:HELLO.TXT,CFile:modeRead);/只讀方式打開/CFile:modeRead可改為 CFile:modeWrite(只寫),/CFile:modeReadWrite(讀寫),CFile:modeCreate(新建)例子:CFile file;file.Open(C:HELLO.TXT,CFile:modeCreate|Cfile:modeWrite);3移動文件指針file.Seek(100,CFile:begin);/從文件頭開始往下移動100字節(jié)file.Seek(-50,CFile:end);/從文件末尾往上移

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論