MFC——文件操作

1.从资源管理器中选择指定类型的文件

//eg:
CString strMapPath;
CString strMapName;
CFileDialog dlg(
	TRUE, //如果为TRUE, 则创建文件打开对话框;
	//如果为FALSE,则构造一个File Save As(另存为)对话框
	_T("map"), //缺省文件扩展名,如果用户在文件名编辑框中不包含扩展名,则lpszDefExt定义的扩展名自动加到文件名后。
	//如果为NULL,则不添加扩展名。 
	NULL, //初始显示于文件名编辑框中的文件名,如果为NULL,则不显示初始文件名。 
	OFN_EXPLORER | OFN_FORCESHOWHIDDEN | OFN_FILEMUSTEXIST,
	//定制对话框
	//OFN_EXPLORER:使用资源管理器界面 OFN_FORCESHOWHIDDEN:强制显示隐藏项目
	//OFN_FILEMUSTEXIST:用户在编辑框中输入的文件名对应的文件必须存在,否则会弹出提示框,
	//这样在IDOK后就不用再检查文件有效性了
	_T("map Files(*.map)|*.map||"
	//指定可以应用到文件的过滤器,|前为提示信息,|后为文件格式,最后以||结尾
	));

if (dlg.DoModal() == IDOK)
{
	map_file_info.strMapFilePath = dlg.GetPathName();
	map_file_info.strMapFileName = dlg.GetFileName();
	//MessageBox(_T("文件已加载"));
}

2.文件读
CFile类及其派生类的使用
2.1 打开文件

BOOL Open(LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL);
参数: lpszFileName 待打开文件的路径,路径可为绝对、相对或网络名(UNC)。  
nOpenFlags 一个定义了文件的共享和访问模式的UINT。它指定了打开文件后的动作,
可以用OR(|)操作符将选项组合起来,至少应有一个访问权限和一个共享选项,
modeCreate和modeNoInherit模式是可选的。可参阅CFile 构造函数中模式选项的列表。 
pError 指向一个存在的文件异常对象,获取失败操作的状态。 

eg:
CStdioFile file;
CFileException e;
if (!file.Open(map_file_info.strMapFilePath, CFile::modeRead, &e))
{
	MessageBox(_T("文件打开失败!"));
#ifdef _DEBUG
		afxDump << "File could not be opened" << e.m_cause << "\n";
#endif
	return;
}

2.2从文件中读取、写入数据
使用CStdioFile类,以文本方式(缺省)打开文件
2.2.1 读取文本
CStdioFile::ReadString

//原型:
BOOL ReadString(CString& rString);
参数: lpsz 指定一个指向用户提供的缓冲区的指针;该缓冲区将接收一个以空字符结尾的文本字符串。 
返回值:
返回一个指向包含文本数据的缓存的指针。如果在到达文件结尾后没有读到任何数据,则返回布尔值FALSE。
注意:这个函数的CString版本将“/n”删除(如果有的话);

2.2.2 写入文本
CStdioFile::WriteString

//原型
virtual void WriteString( LPCTSTR lpsz );
参数: lpsz 指定一个指向存放了以空字符结尾的文本字符串的缓冲区的指针 
说明:
此成员函数将一个缓冲区中的数据写入与CStdioFile对象关联的文件中。
结束的空字符(“\0”)不被写入该文件。
lpsz中的所有换行符都被以一个硬回车—换行符对写入该文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ MFC中的文件打开和保存对话框可以通过CFileDialog类来实现。CFileDialog类是MFC提供的一个对话框类,用于选择文件的打开和保存操作。 要使用CFileDialog类,首先需要包含头文件<afxdlgs.h>。然后可以创建一个CFileDialog对象,并使用DoModal()函数来显示对话框。 下面是一个简单的示例代码,演示如何使用CFileDialog类来实现文件的打开和保存对话框: ```cpp #include <afxdlgs.h> // 文件打开对话框示例 void OpenFile() { CFileDialog dlg(TRUE); // 创建一个打开文件对话框 if (dlg.DoModal() == IDOK) // 显示对话框并检查用户是否点击了“打开”按钮 { CString filePath = dlg.GetPathName(); // 获取用户选择的文件路径 // 在这里可以对文件进行处理,比如读取文件内容等 } } // 文件保存对话框示例 void SaveFile() { CFileDialog dlg(FALSE); // 创建一个保存文件对话框 if (dlg.DoModal() == IDOK) // 显示对话框并检查用户是否点击了“保存”按钮 { CString filePath = dlg.GetPathName(); // 获取用户选择的文件路径 // 在这里可以将数据保存到文件中 } } ``` 在上面的示例代码中,OpenFile()函数演示了如何使用CFileDialog类来实现文件的打开对话框。首先创建一个CFileDialog对象,参数TRUE表示打开文件对话框。然后调用DoModal()函数显示对话框,并检查用户是否点击了“打开”按钮。如果用户点击了“打开”按钮,可以通过GetPathName()函数获取用户选择的文件路径。 SaveFile()函数演示了如何使用CFileDialog类来实现文件的保存对话框。与打开对话框类似,首先创建一个CFileDialog对象,参数FALSE表示保存文件对话框。然后调用DoModal()函数显示对话框,并检查用户是否点击了“保存”按钮。如果用户点击了“保存”按钮,可以通过GetPathName()函数获取用户选择的文件路径。 需要注意的是,CFileDialog类还提供了其他一些函数来设置对话框的标题、过滤器、默认文件名等属性,可以根据实际需求进行设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值