二话不说,先上代码!
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、说明
本文代码主要参考戴吾蛟老师编写的《测绘程序设计》,主要为了分析代码和其中运用到的知识,在此分享给大家!