当前位置: 首页 > article >正文

MFC/C++学习系列之简单记录12——文件操作

MFC/C++学习系列之简单记录12——文件操作

  • 前言
  • 文件操作处理
  • 具体使用
    • CFileDialog类
  • CFile类和CStdioFile类
  • 错误
  • 总结


前言

学习MFC的文件处理操作!


文件操作处理

  • CFileDialog类:对话框类,获取选择的文件信息。
  • CFile类:抽象类,对文件的直接打开、关闭、读取、写入操作。
  • CStdioFile类:CFile的派生类,标准格式化文本输入输出。

具体使用

CFileDialog类

定义两个按钮,打开文件和保存文件。来使用一下CFileDialog!
在这里插入图片描述
在添加按钮后,要记得添加变量!

CFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
		LPCTSTR lpszDefExt = NULL,
		LPCTSTR lpszFileName = NULL,
		DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
		LPCTSTR lpszFilter = NULL,
		CWnd* pParentWnd = NULL,
		DWORD dwSize = 0,
		BOOL bVistaStyle = TRUE);
  • BOOL bOpenFileDialog:
    TRUE:创建一个打开文件的对话框。
    FALSE:创建一个保存文件的对话框。
  • LPCTSTR lpszDefExt = NULL:默认文件扩展名。
  • LPCTSTR lpszFileName = NULL:初始文件名,显示在对话框中的文件名输入框的初始值。
  • DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT:对话框的行为标志。常用的标志包括:
    OFN_HIDEREADONLY:隐藏“只读”复选框。
    OFN_OVERWRITEPROMPT:如果选择的文件已存在,提示用户是否覆盖。
    OFN_PATHMUSTEXIST:确保路径存在。
    OFN_FILEMUSTEXIST:确保文件存在。
    OFN_ALLOWMULTISELECT:允许选择多个文件。
  • LPCTSTR lpszFilter = NULL:文件类型过滤器。定义用户可以选择的文件类型。格式为:“Text Files (.txt)|.txt|All Files (.)|.||”。
  • CWnd pParentWnd* = NULL:父窗口指针。对话框将作为这个窗口的子窗口显示。
  • DWORD dwSize = 0:保留参数,用于确保与16位版本的兼容性。通常设置为0。
  • BOOL bVistaStyle = TRUE:是否使用Vista风格的对话框。如果设置为TRUE,将使用Vista风格的对话框;如果设置为FALSE,将使用旧风格的对话框。
    举例:
//打开文件
CFileDialog fileDlg(TRUE, // TRUE for file open, FALSE for file save
		_T("txt"), // Default file extension
		NULL, // No initial file name
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, // Options
		_T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), // File types filter
		this); // Parent window
//保存文件
CFileDialog fileDlg(FALSE, // FALSE for file save
		_T("txt"), // Default file extension
		_T("MyDocument.txt"), // Initial file name
		OFN_OVERWRITEPROMPT, // Options
		_T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), // File types filter
		this); // Parent window
//简单使用
CFileDialog fileDlg(TRUE);
CFileDialog fileDlg(FALSE);

以上是简单的打开对话框,打开对话框后,可以继续使用该类完成一些需求,在这里需要搭配DoModal 方法来显示对话框。

  • GetPathName():获取完整的文件路径。
  • GetFileName():获取文件名。
  • GetFileTitle():获取不包含路径的文件名。
  • GetFileExt():获取文件扩展名。
  • GetNextPathName():获取下一个选择的文件路径(用于多选)。
if(fileDlg.DoModal() == IDOK)
{
   CStringArray FilesName;
  fileDlg.GetFileName(FilesName);
}
else
{
  
}

在这里插入图片描述

CFile类和CStdioFile类

  • open:打开文件
  • ReadString:读取数据
  • Close:关闭文件
  • WriteString:写入文件
  • Flush:确保内容全部写入
	CFile file;
	CFileException exception;
	file.Open(_T("xxx.txt"), 
		CFile::modeRead | CFile::typeBinary, &exception);

	CStdioFile file1;
	CFileException exception;
	file1.Open(_T("xxx.txt"), CFile::modeRead, &exception);

从上述代码看,两者使用差不多。再看源码:class CStdioFile : public CFile。说明CStdioFile就是CFile的派生类。使用方式类似。

错误

0x75D70EE2 (KernelBase.dll)处(位于 MFCApplication1.exe 中)引发的异常: 0x000006BA: RPC 服务器不可用。
shell\comdlg32\fileopensave.cpp(9121)\comdlg32.dll!7687D1E0: (caller: 76856571) ReturnHr(1) tid(566c) 8007000E 内存资源不足,无法完成此操作。
在使用文件对话框时,没有对话框弹出。
这里是因为在之前项目中设置了堆栈的大小,设置过大,导致无法弹窗。修改堆栈大小,改小,文件弹窗。


总结

本文主要介绍了关于文件类的操作!


http://www.kler.cn/a/451904.html

相关文章:

  • 极狐GitLab 17.7正式发布,可从 GitLab 丝滑迁移至极狐GitLab【一】
  • C#调用OpenXml,读取excel行数据,遇到空单元跳过现象处理
  • 代码随想录Day37 动态规划:完全背包理论基础,518.零钱兑换II,本周小结动态规划,377. 组合总和 Ⅳ,70. 爬楼梯(进阶版)。
  • 从数据仓库到数据中台再到数据飞轮:电信行业的数据技术进化史
  • 操作系统导论读书笔记
  • Scala课堂小结
  • GitFlow工作流
  • Batch_Size对神经网络训练效率的影响:一个PyTorch实例分析
  • JAVA智慧养老养老护理帮忙代办陪诊陪护小程序APP源码
  • 2024-12-25-sklearn学习(20)无监督学习-双聚类 料峭春风吹酒醒,微冷,山头斜照却相迎。
  • Java 中 getClass() 方法的使用与原理分析:深入理解对象类型信息
  • [C/C++]智能指针是什么?实现原理是什么?
  • 鸿蒙设置app更新跳转华为市场
  • 一个桌面工具条系统,插件一键启动,快速扩展提高工作效率
  • 硬件设计:RS232电平标准
  • 如何在谷歌浏览器中设置默认下载路径
  • R基于贝叶斯加法回归树BART、MCMC的DLNM分布滞后非线性模型分析母婴PM2.5暴露与出生体重数据及GAM模型对比、关键窗口识别
  • 集合stream
  • springboot/ssm社区助老志愿者服务平台Java代码编写web志愿捐赠活动项目
  • Linux文件目录 --- touch命令创建文件
  • 项目开源能够带来什么?从中得到了什么?
  • 【网络云计算】2024第52周-每日【2024/12/25】小测-理论实操-自己构造场景,写5个系统管理的脚本-解析
  • Python——day09
  • C++之红黑树模拟实现
  • windows10/windows11运行ps1脚本报错的解决方法,签名错误解决方法
  • docker代理配置