文件的打开及读取

m_editFile 为与编辑框控件相关联的字符串型变量。


1. 用CFileDialog创建打开文件对话框,并将要打开的文件路径显示在编辑框内:

</pre><p><pre name="code" class="cpp">        UpdateData(TRUE);
	// 打开文件对话框样式设置
	CFileDialog FileOpenDialog(TRUE);
	FileOpenDialog.m_ofn.Flags = OFN_ENABLEHOOK|OFN_EXPLORER;
	CString strFilter;
	strFilter = _T("TXT");
	strFilter += (TCHAR)'\0'; 
	strFilter += _T("*.txt");
	strFilter += (TCHAR)'\0';  
	CString allFilter;
	VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER));
	strFilter += allFilter;
	strFilter += (TCHAR)'\0';  
	strFilter += _T("*.*");
	strFilter += (TCHAR)'\0';   

	FileOpenDialog.m_ofn.lpstrFilter = strFilter;
	FileOpenDialog.m_ofn.lpstrTitle = "Download Filename...";

	// Set up the default to match a file that is open.....
	CString sFileName;
	sFileName.Empty();
	if ((((CMDIFrameWnd *) AfxGetMainWnd())->MDIGetActive()) != NULL)
		sFileName = (((CMDIFrameWnd *) AfxGetMainWnd())->MDIGetActive())->GetActiveDocument()->GetTitle();
	if (!sFileName.IsEmpty())
	{
		if (sFileName.Find('.') != -1)
			sFileName = sFileName.Left(sFileName.Find('.'));
		sFileName += _T(".hex");
		strcpy(FileOpenDialog.m_ofn.lpstrFile,LPCTSTR(sFileName));
	}
	
	// 选择要打开的文件后
	BOOL bResult = FileOpenDialog.DoModal() == IDOK ? TRUE : FALSE;
	if (bResult)
	{
		m_editFile = FileOpenDialog.GetPathName();		// 获取要打开文件的路径
		UpdateData(FALSE);	// 将路径在编辑框中显示

	}	


      创建打开文件对话框,上例是一种方法,还可以使用下面的方法:

CFileDialog mFileDlg (TRUE,NULL,NULL,  OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT, "All Files (*.*) |*.* ||",AfxGetMainWnd());

//倒数第二个参数,定义打开文件类型

//代表所有文件"All Files (*.*) |*.*||

// OFN_ALLOWMULTISELECT表示可以复选文件

//第一个参数为true是打开对话框,为false是保存对话框
///////////////////////////////////////////////////////////////////////////////////////////////////

//m_ofn.lpstrFile分配一块内存

///////////////////////////////////////////////////////////////////////////////////////////////////

CString str(" ",10000);  

mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000);
str.ReleaseBuffer();

///////////////////////////////////////////////////////////////////////

//显示打开/保存对话框

if(mFileDlg.DoModal()!=IDOK)
{
  return;
}


2. 选择好要打开的文件后,打开文件,并将文件内的内容放入字符串buffer

    2.1  获取文件大小

HANDLE fileHand;
	DWORD fileSize;
	fileHand = CreateFile(m_editFile,0,0,0,OPEN_EXISTING,0,0);  // m_editFile为文件路径,第一步第一个示例中获得
	fileSize = GetFileSize(fileHand,0);
    2.2 读取文件放入自动设置大小的buffer. 注意:这个buffer必须为char型

	char * bufFile = new char [fileSize];	// 文件读取buffer
	CFile file;
	file.Open(m_editFile,CFile::modeRead);	
	file.Read(bufFile,fileSize);
    2.3 将文件存入字符串buffer

CString sFile;
	sFile = bufFile;

参考示例: PC_F340(T600)项目的Configure对话框



你可能感兴趣的:(文件的打开及读取)