文件的打开及读取

99 篇文章 0 订阅
22 篇文章 1 订阅

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对话框



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值