




已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VC中的文件讀寫(xiě)操作各種關(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:windowssysbkup*.cab);while(bWorking) bWorking=finder.FindNextFile(); strFileTitle=finder.GetFileTitle();2文件的打開(kāi)/保存對(duì)話框 讓用戶(hù)選擇文件進(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_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文件的讀寫(xiě) 文件的讀寫(xiě)非常重要,下面將重點(diǎn)進(jìn)行介紹。文件讀寫(xiě)的最普通的方法是直接使用CFile進(jìn)行,如文件的讀寫(xiě)可以使用下面的方法: /對(duì)文件進(jìn)行讀操作 char sRead2;CFile mFile(_T(user.txt),CFile:modeRead);if(mFile.GetLength()m_cause); MessageBox(str); file.Abort(); e-Delete();/寫(xiě)文件數(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(寫(xiě)入成功!);catch(CFileException *e) CString str; str.Format(寫(xiě)入失敗的原因是:%d,e-m_cause); MessageBox(str); file.Abort(); e-Delete();雖然這種方法最為基本,但是它的使用繁瑣,而且功能非常簡(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:ddtry.TRY,CFile:modeCreate|CFile:modeNoTruncate|CFile:modeWrite);CArchive ar(&mFile,CArchive:store);arstrTemp; 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.ReadClass();/使用CAboutDlg類(lèi) CObject* pObject=mRunClass-CreateObject(); (CDialog* )pObject)-DoModal();雖然VC提供的文檔/視結(jié)構(gòu)中的文檔也可進(jìn)行這些操作,但是不容易理解、使用和管理,因此雖然很多VC入門(mén)的書(shū)上花費(fèi)大量篇幅講述文檔/視結(jié)構(gòu),但我建議你最好不要使用它的文檔。關(guān)于如何進(jìn)行文檔/視的分離有很多書(shū)介紹,包括非常著名的Visual C+ 技術(shù)內(nèi)幕。 如果你要進(jìn)行的文件操作只是簡(jiǎn)單的讀寫(xiě)整行的字符串,我建議你使用ofstream和ifstream,用它來(lái)進(jìn)行此類(lèi)操作非常方便,如下例。 /寫(xiě)文件std:ofstream f(m_file_path);fx y z x y z ;/一行行讀4臨時(shí)文件的使用 正規(guī)軟件經(jīng)常用到臨時(shí)文件,你經(jīng)常可以會(huì)看到C:WindowsTemp目錄下有大量的擴(kuò)展名為tmp的文件,這些就是程序運(yùn)行是建立的臨時(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;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。 CFile 類(lèi)的使用1顯示對(duì)話框,取得文件名CString FilePathName;CFileDialog dlg(TRUE);/TRUE為OPEN對(duì)話框,F(xiàn)ALSE為S*E AS對(duì)話框if (dlg.DoModal() = IDOK) FilePathName=dlg.GetPathName();相關(guān)信息:CFileDialog 用于取文件名的幾個(gè)成員函數(shù):假如選擇的文件是C:WINDOWSTEST.EXE則(1)GetPathName();取文件名全稱(chēng),包括完整路徑。取回C:WINDOWSTEST.EXE(2)GetFileTitle();取文件全名:TEST.EXE(3)GetFileName();取回TEST(4)GetFileExt();取擴(kuò)展名EXE2打開(kāi)文件CFile file(C:HELLO.TXT,CFile:modeRead);/只讀方式打開(kāi)/CFile:modeRead可改為 CFile:modeWrite(只寫(xiě)),/CFile:modeReadWrite(讀寫(xiě)),CFile:modeCreate(新建)例子:CFile file;file.Open(C:HELLO.TXT,CFile:modeCreate|Cfile:modeWrite);3移動(dòng)文件指針file.Seek(100,CFile:begin);/從文件頭開(kāi)始往下移動(dòng)100字節(jié)file.Seek(-50,CFile:end);/從文件末尾往上移
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)臨時(shí)職工合同范本
- 信托通道業(yè)務(wù)合同范例
- 個(gè)人紅酒購(gòu)銷(xiāo)合同范本
- 仔豬采購(gòu)合同范本
- 代收美金合同范本
- 個(gè)人和業(yè)主裝修合同范本
- 臨時(shí)幼師合同范本
- 植物油罐高空作業(yè)施工方案
- 2025四川瀘州市納溪區(qū)融新文化傳媒有限責(zé)任公司招聘2人筆試參考題庫(kù)附帶答案詳解
- 勞務(wù)服務(wù)協(xié)議合同范本
- 電鍍廢水中各種重金屬?gòu)U水處理反應(yīng)原理及控制條件
- 數(shù)據(jù)結(jié)構(gòu)英文教學(xué)課件:chapter3 Linked Lists
- 診斷學(xué)完整教案(共167頁(yè))
- 《汽車(chē)文化》全套教案
- 會(huì)計(jì)英語(yǔ)專(zhuān)業(yè)詞匯全
- 拆除工程檢驗(yàn)批質(zhì)量檢驗(yàn)記錄
- 甲狀腺腫瘤PPT課件
- 怎樣把握文章線索
- LED與金鹵燈對(duì)比(共4頁(yè))
- (完整版)部編四年級(jí)語(yǔ)文下詞語(yǔ)表
- 高頻電子線路完整章節(jié)課件(胡宴如)
評(píng)論
0/150
提交評(píng)論