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