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

好事发生文章推荐:C++新旅程:三大特性之多态

文章链接:https://cloud.tencent.com/developer/article/2471684

文章简介:本文介绍了C++的多态特性,并举例说明了使用情况,感兴趣的同学可以详细了解一下!

前言学习MFC的文件处理操作!

文件操作处理CFileDialog类:对话框类,获取选择的文件信息。CFile类:抽象类,对文件的直接打开、关闭、读取、写入操作。CStdioFile类:CFile的派生类,标准格式化文本输入输出。具体使用CFileDialog类定义两个按钮,打开文件和保存文件。来使用一下CFileDialog!在添加按钮后,要记得添加变量!

代码语言:cpp复制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,将使用旧风格的对话框。

举例:代码语言:cpp复制//打开文件

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():获取下一个选择的文件路径(用于多选)。代码语言:cpp复制if(fileDlg.DoModal() == IDOK)

{

CStringArray FilesName;

fileDlg.GetFileName(FilesName);

}

else

{

}CFile类和CStdioFile类open:打开文件ReadString:读取数据Close:关闭文件WriteString:写入文件Flush:确保内容全部写入代码语言:cpp复制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 内存资源不足,无法完成此操作。

在使用文件对话框时,没有对话框弹出。

这里是因为在之前项目中设置了堆栈的大小,设置过大,导致无法弹窗。修改堆栈大小,改小,文件弹窗。

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

Copyright © 2088 14年世界杯决赛_世界杯预选赛中国队出线形势 - pengxiaojing.com All Rights Reserved.
友情链接