真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MFC文件操作-創(chuàng)新互聯(lián)

MFC提供了一個(gè)文件操作的基類CFile,這個(gè)類提供了一個(gè)沒(méi)有緩存的二進(jìn)制格式的磁盤(pán)輸入輸出功能。通過(guò)他的派生類可以間接的支持文本、文件、內(nèi)存文件等。

成都創(chuàng)新互聯(lián)為客戶提供專業(yè)的做網(wǎng)站、網(wǎng)站制作、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開(kāi)發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開(kāi)發(fā)、WEB系統(tǒng)開(kāi)發(fā)、微信二次開(kāi)發(fā)、成都做手機(jī)網(wǎng)站等網(wǎng)站方面業(yè)務(wù)。打開(kāi)文件

通過(guò)對(duì)CFile類的初始化,即可完成文件的打開(kāi)

CFile類的其中一個(gè)構(gòu)造函數(shù):

CFile(LPCTSTR lpszFileName, UINT nOpenFlags);
  • 參數(shù)lpszFileName

? 表示文件名

  • 參數(shù)nOpenFlage

? 表示打開(kāi)方式

CFile打開(kāi)文件模式總結(jié),里面有幾種模式可能是SDK中的高級(jí)模式,使用頻率不高,不過(guò)應(yīng)該可以在某種場(chǎng)合滿足用戶的一些高級(jí)要求。因?yàn)槲覜](méi)有用到過(guò),所以可能翻譯的理解上有偏差。如果以后有幸能理解透徹,再來(lái)斟酌修改吧。

打開(kāi)模式含義

CFile::modeCreate

直接構(gòu)建創(chuàng)建一個(gè)新文件。如果該文件已經(jīng)存在,則文件內(nèi)容自動(dòng)被清零。

CFile::modeNoTruncate

該值一般modeCreate組合使用。如果創(chuàng)建的文件已經(jīng)存在,那么它不會(huì)被清零。因而該文件能可靠的打開(kāi),或者新建一個(gè)文件或者打開(kāi)一個(gè)現(xiàn)存文件。這對(duì)于打開(kāi)一個(gè)可能存在可能不存在的設(shè)置文件十分有用。該選項(xiàng)通用可用于CStdioFile。

CFile::modeRead

以只讀方式打開(kāi)文件

CFile::modeReadWrite ?

以可讀可寫(xiě)方式打開(kāi)文件。

CFile::modeWrite

以只寫(xiě)方式打開(kāi)文件。

CFile::modeNoInherit

阻止文件被子進(jìn)程繼承。

CFile::shareDenyNone

以不拒絕其他進(jìn)程對(duì)文件的讀寫(xiě)方式打開(kāi)。如果文件已經(jīng)被其他進(jìn)程以compatibility模式打開(kāi),則文件創(chuàng)建失敗。

CFile::shareDenyRead

以拒絕其他進(jìn)程對(duì)文件讀的方式打開(kāi)。如果文件已經(jīng)被其他進(jìn)程以compatibility模式或讀打開(kāi),則文件創(chuàng)建失敗。

CFile::shareDenyWrite

以拒絕其他進(jìn)程對(duì)文件寫(xiě)的方式打開(kāi)。如果文件已經(jīng)被其他進(jìn)程以compatibility模式或?qū)懘蜷_(kāi),則文件創(chuàng)建失敗。

CFile::shareExclusive

以exclusive方式打開(kāi),拒絕其他進(jìn)程對(duì)文件的讀寫(xiě)。如果該文件已經(jīng)被不管任何進(jìn)程以任何方式打開(kāi)都構(gòu)建失敗。

CFile::shareCompat

此標(biāo)志在32位MFC中無(wú)效。該標(biāo)志當(dāng)使用CFile::Open時(shí)映射為CFile::shareExclusive。

CFile::typeText

以文本方式打開(kāi)。

CFile::typeBinary ??

以二進(jìn)制方式打開(kāi)(只在派生類中使用)。

CFile::osNoBuffer

系統(tǒng)打開(kāi)文件不開(kāi)系統(tǒng)緩存??刹榭碢latform SDK中CreateFile的FILE_FLAG_NO_BUFFERING。

CFile::osWriteThrough

通過(guò)任何快速緩存并直接寫(xiě)磁盤(pán)的標(biāo)志。可查看Platform SDK中CreateFile的FILE_FLAG_WRITE_THROUGH。

CFile::osRandomAccess

隨機(jī)訪問(wèn)文件方式。系統(tǒng)使用這種方式優(yōu)化文件緩沖區(qū)。

CFile::osSequentialScan

從開(kāi)頭到結(jié)尾的順序訪問(wèn)文件方式。系統(tǒng)使用這種方式來(lái)優(yōu)化文件緩沖區(qū)??刹榭碢latform SDK中CreateFile的FILE_FLAG_SEQUENTIAL_SCAN。

寫(xiě)文件?

寫(xiě)文件時(shí),需調(diào)用類的Write函數(shù)

void CFile::Write(const void* lpBuf, UINT nCount);
  • 參數(shù)lpBuf

表示寫(xiě)入數(shù)據(jù)的緩沖區(qū)

  • 參數(shù)nCount

表示寫(xiě)入數(shù)據(jù)的字符數(shù)

讀文件?

讀文件時(shí),調(diào)用類的Read函數(shù)?

UINT CFile::Read(void* lpBuf, UINT nCount);
  • 參數(shù)lpBuf

表示接收讀取數(shù)據(jù)的緩沖區(qū)

  • 參數(shù)nCount

表示要讀取數(shù)據(jù)的字符數(shù)

  • 返回值

返回讀取到緩沖區(qū)的字節(jié)數(shù)?

在文件操作完畢后需要調(diào)用Close函數(shù)來(lái)關(guān)閉文件,如果在銷(xiāo)毀對(duì)象之前尚未關(guān)閉文件,析構(gòu)函數(shù)將為您關(guān)閉該文件。如果使用new在堆上分配對(duì)象,則必須在關(guān)閉 file.setsto 后將其刪除。

獲取文件長(zhǎng)度?

我們可以使用CFile類的GetLength函數(shù)來(lái)獲取文件的長(zhǎng)度

virtual ULONGLONG CFile::GetLength() const;

該函數(shù)可以返回我們打開(kāi)的文件長(zhǎng)度?

Example?

代碼示例:

寫(xiě)文件時(shí),使用CFile::modeCreate和CFile::modeWrite模式初始我們的CFile類

//mfc文件操作
void CMyFileCFileView::OnMFCWriteFile() {
	//MFC提供的文件操作時(shí)CFile類
	CFile file(L"4.txt", CFile::modeCreate | CFile::modeWrite);	//CFile提供的其中一個(gè)構(gòu)造函數(shù)
	file.Write("Hello World", strlen("Hello World"));
	file.Close();
}

讀文件,首先獲得文件的大小,根據(jù)大小new一個(gè)字符緩沖區(qū)接收讀取的文件內(nèi)容。?

//讀文件
void CMyFileCFileView::OnMFCReadFile() {
	CFile file(L"4.txt", CFile::modeRead);	//CFile提供的其中一個(gè)構(gòu)造函數(shù)
	char* pBuf;
	//獲取文件大小
	DWORD dwFileLen = file.GetLength();

	pBuf = new char[dwFileLen + 1];

	file.Read(pBuf, dwFileLen);
	pBuf[dwFileLen] = 0;
	file.Close();
	USES_CONVERSION;
	CString strBuf = A2W(pBuf);
	MessageBox(strBuf);
}

運(yùn)行結(jié)果:?

CFileDialog 類

有時(shí)候我們希望能動(dòng)態(tài)更改文件的讀寫(xiě)位置,那么就可以使用CFileDialog類來(lái)實(shí)現(xiàn)這一功能。

CFileDialog類封裝了Windows常用的文件對(duì)話框。常用的文件對(duì)話框提供了一種簡(jiǎn)單的與Windows標(biāo)準(zhǔn)相一致的文件打開(kāi)文件存盤(pán)對(duì)話框功能。

下面代碼示例了一種簡(jiǎn)單的文件存盤(pán)和打開(kāi)對(duì)話框功能。文件的讀取和寫(xiě)入使用的是MFC的文件讀寫(xiě)。

文件保存:

下面這段程序更改了對(duì)話框標(biāo)題,并限定保存的文件類型為.txt文本類型,當(dāng)用戶點(diǎn)擊對(duì)話框確定按鈕后,程序會(huì)讀取用戶輸入的文件名,并將其保存為.txt類型。最后向文本內(nèi)寫(xiě)入"Tom and Jerry"

void CMyFileCFileView::OnFileDialog() {
	CFileDialog fileDlg(FALSE);
	fileDlg.m_ofn.lpstrTitle = L"提示";//改標(biāo)題
	fileDlg.m_ofn.lpstrFilter = _T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");
	fileDlg.m_ofn.lpstrDefExt = L"txt";

	if (IDOK == fileDlg.DoModal()) {
		CFile file(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite);
		USES_CONVERSION;
		char *szBuf = T2A(fileDlg.GetFileName());
		file.Write("Tom and Jerry", strlen("Tom and Jerry"));
		file.Close();
	}

}

文件讀?。?

下面這段程序更改了對(duì)話框標(biāo)題,并限定讀取的文件類型為.txt文本類型,當(dāng)用戶點(diǎn)擊對(duì)話框確定按鈕后,程序會(huì)讀取用戶輸入的文件名,并讀取這個(gè)文件內(nèi)容,之后通過(guò)消息框顯示出來(lái)。

void CMyFileCFileView::OnFileDialogRead() {
	CFileDialog fileDlg(TRUE);
	fileDlg.m_ofn.lpstrTitle = L"提示";//改標(biāo)題
	fileDlg.m_ofn.lpstrFilter = _T("Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0");
	if (IDOK == fileDlg.DoModal()) {
		CFile file(fileDlg.GetFileName(), CFile::modeRead);
		char* pBuf;
		DWORD dwFileLen = file.GetLength();
		pBuf = new char[dwFileLen + 1];
		pBuf[dwFileLen] = 0;
		file.Read(pBuf, dwFileLen);
		USES_CONVERSION;
		CString strBuf = A2W(pBuf);
		MessageBox(strBuf);
		file.Close();
	}

}

CFileDialog的構(gòu)造函數(shù)

explicit CFileDialog(
    BOOL bOpenFileDialog,
    LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL,
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    LPCTSTR lpszFilter = NULL,
    CWnd* pParentWnd = NULL,
    DWORD dwSize = 0,
    BOOL bVistaStyle = TRUE
);
  • 參數(shù)bOpenFileDialog

指定要?jiǎng)?chuàng)建的對(duì)話框類型,TRUE表示文件打開(kāi)對(duì)話框,F(xiàn)ALSE表示文件另存為對(duì)話框

  • 參數(shù)lpszDefExt

表示默認(rèn)文件擴(kuò)展名

  • 參數(shù)lpszFileName

表示顯示在“文件名”框中的初始文件名

  • 參數(shù)?dwFlags

用于設(shè)置對(duì)話框的標(biāo)志組合,例如標(biāo)題。

  • 參數(shù)lpszFilter

指定文件的篩選器。如果指定文件篩選器,則只有與篩選條件匹配的文件才會(huì)顯示在“文件”列表中。

  • 參數(shù)pParentWnd

指定文件對(duì)話框的父窗口或所有者的窗口指針

  • 參數(shù)dwSize

結(jié)構(gòu)的大小。此值取決于操作系統(tǒng)版本。默認(rèn)大小 0 表示 MFC 代碼將根據(jù)運(yùn)行程序的操作系統(tǒng)版本確定要使用的正確對(duì)話框大小。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


網(wǎng)頁(yè)題目:MFC文件操作-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://weahome.cn/article/ijjsj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部