計(jì)算機(jī)二級(jí):VisualC++編程中的文件操作2016/5/14 10:42:05 | 來(lái)源:中國(guó)教育在線 | 發(fā)布者: | 查看:1082次

各種關(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ì)話框

讓用戶(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_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();

}

凡本站注明“稿件來(lái)源:新科教育”的所有圖文音視頻,版權(quán)均屬新科所有,任何媒體、網(wǎng)站或個(gè)人未經(jīng)本網(wǎng)協(xié)議授權(quán)不得轉(zhuǎn)或以其他方式復(fù)制發(fā)表。已獲得本站協(xié)議 授權(quán)的媒體、網(wǎng)站,在下載使用時(shí)必須注明“稿件來(lái)源:新科教育”,違者本站將依法追究責(zé)任。
熱門(mén)課程
  • 您的電話:

您好,新科教育精品課程
找到了感興趣的課程!