利用CStdioFile类实现写文件读文件(mfc)


二话不说,先上代码!

1、主要函数

1、1读文件

// TODO: 在此添加控件通知处理程序代码
	CFileDialog dlgFile(TRUE, _T("txt"), NULL, OFN_ALLOWMULTISELECT | OFN_EXPLORER, _T("(文本文件)|.txt"));//OFN_ALLOWMULTISELECT “ 文件名 ”列表框允许多个选择。 如果还设置了 OFN_EXPLORER 标志,对话框将使用资源管理器样式的用户界面; 否则,它使用旧式用户界面。
//OFN_EXPLORER 指示对 “打开 ”或“ 另存为 ”对话框所做的任何自定义都使用资源管理器样式的自定义方法。
		if(dlgFile.DoModal()== IDCANCEL)//IDOK 或 IDCANCEL。 如果返回 IDCANCEL,请调用 Windows CommDlgExtendedError 函数以确定是否发生了错误。
//IDOK 和 IDCANCEL 是常量,指示用户选择了“确定”按钮还是“取消”按钮。
		return;
		CString strFileName = dlgFile.GetPathName();//获取打开文件文件名,文件名包括前缀和扩展名。 例如,对于文件 C : \FILES\TEXT.DAT,GetFileName 会返回“TEXT.DAT”。
		setlocale(LC_ALL, "");//设置语言环境
		CStdioFile sf;//定义文件
		if(!sf.Open(strFileName, CFile::modeRead)) return;//设置打开文件方式
		CString strLine;
		readin.Empty();//清空richedit
		BOOL bEOF = sf.ReadString(strLine);//读取一行
		while (bEOF)//判断是否到达文件末尾
		{

			readin+=strLine;
			bEOF = sf.ReadString(strLine);//读取一行
			if (bEOF)//判断是否到达文件末尾
			readin+=_T("\n");//添加换行符
		}
		sf.Close();//关闭文件
		UpdateData(FALSE);

1、2写文件

void CMFCApplication5Dlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	CFileDialog dlgFile(FALSE, _T("txt"),NULL,OFN_EXPLORER,_T("文本文件)| * .txt"));//创建打开文件对话框
	if (dlgFile.DoModal()==IDCANCEL) return;
	CString strFileName = dlgFile.GetPathName();//获取文件名
	setlocale(LC_ALL, "");//设置语言环境
	CStdioFile sf;
	if(!sf.Open(strFileName, CFile::modeCreate | CFile::modeWrite)) return;//设置打开方式,打开失败返回
	sf.WriteString(writein);//写文件
	sf.Close();//关闭文件
	UpdateData(FALSE);
}

2、补充知识

1、CFileDialog类(针对其参数来讲)
// 参数1:BOOL bOpenFileDialog,//[in] 参数,指定要创建的对话框类型。 将其设置为 TRUE 可构造“文件 > 打开”对话框。 将其设置为 FALSE 可构造“文件 > 另存为”对话框。
// 参数2:LPCTSTR lpszDefExt = NULL,//[in]默认的文件扩展名。 如果用户不包含已知扩展名 (在文件名框中) 用户计算机上具有关联的扩展, 则 lpszDefExt 指定的扩展名会自动追加到文件名中。 如果此参数为 NULL,则不会追加任何扩展名。
// 参数3:LPCTSTR lpszFileName = NULL,//[in] “文件名”框中显示的初始文件名。 如果为 NULL,则不会显示初始文件名。
// 参数4:DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,//[in] 一个或多个标志的组合,可用于自定义对话框。 有关这些标志的说明,请参阅 Windows SDK 中的 OPENFILENAME 结构。
// 参数4:LPCTSTR lpszFilter = NULL, /一系列字符串对,用于指定可应用于文件的筛选器。 如果指定文件筛选器,
// 则只有与筛选条件匹配的文件才会显示在“文件”列表中, 例如excel的筛选器可以编写如下
// 参数5:static TCHAR BASED_CODE szFilter[] = _T("Chart Files (
.xlc)|.xlc|")
// _T("Worksheet Files (
.xls)|.xls|Data Files (.xlc;.xls)|“)
// _T(”
.xlc; .xls|All Files (.)|.*||");szFilter为第五个参数
// 参数6:CWnd
pParentWnd = NULL,
// 参数7:DWORD dwSize = 0,
// 参数8:BOOL bVistaStyle = TRUE);/后面三个参数不常用/
2、C 库函数 – setlocale() | 菜鸟教程 (runoob.com)
3、打开文件的方式,本文主要用到示例8:SaveResult(写文件)和示例5: getJfResultFromFile(读文件)。

3、说明

本文代码主要参考戴吾蛟老师编写的《测绘程序设计》,主要为了分析代码和其中运用到的知识,在此分享给大家!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值