ImageVerifierCode 换一换
格式:DOCX , 页数:49 ,大小:210.16KB ,
资源ID:7397087      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7397087.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第13章文件操作Word格式文档下载.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第13章文件操作Word格式文档下载.docx

1、标识文件的访问权限,例如:GENERIC_READ 文件能够被读取;GENERIC_WRITE 能够向文件写入数据。 dwShareMode:标识文件进行共享的方式,例如:0 表示不共享文件;FILE_SHARE_READ:允许读共享;FILE_SHARE_WRITE:允许写共享。 lpSecurityAttributes:定义文件的安全特性,一般为NULL,使用默认安全属性。 dwCreationDisposition:定义对指定文件的操作方式,可以为下述常数之一: CREATE_NEW 创建新文件,如文件存在则会出错。 CREATE_ALWAYS 创建新文件,如果文件已经存在,会改写文件的

2、属性 OPEN_EXISTING 打开文件,文件必须已经存在,否则函数调用失败 OPEN_ALWAYS 打开文件,如文件不存在则创建它。 TRUNCATE_EXISTING 将现有文件缩短为零长度。 dwFlagsAndAttributes:定义文件属性,例如:FILE_ATTRIBUTE_HIDDEN 文件具有隐藏属性 FILE_ATTRIBUTE_NORMAL 文件具有默认属性。 hTemplateFile:如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性。 此函数如果调用成功将返回打开文件的文件句柄,如果调用失败将返回INVALID_HANDLE_VALUE,使用GetL

3、astError()可以获得具体的错误码。下面是使用该函数打开一个已经存在文件”c:TestFileApi.txt”的范例:HANDLE hFile; /声明一个句柄变量hFile=CreateFile(c:TestFileApi.txt, GENERIC_WRITE, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, NULL); /打开文件if (hFile = NULL | hFile = INVALID_HANDLE_VALUE) int nErrorCode = :GetLastError(); /获取错误代码(2)ReadFile函数用来读

4、取文件数据,其语法格式如下所示:BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);该函数用来从文件中读取数据,其参数详解如下: hFile:需要读取数据的文件句柄。 lpBuffer:用于保存读入数据的缓冲区。 nNumberOfBytesToRead:本次操作要读取的字节数。 lpNumberOfBytesRead:返回本次操作实际读取的字节数。 lpOverlapped:该结构定义了

5、一次异步读取操作。否则,应将这个参数设为NULL。下面是读取一个已经打开文件的范例:DWORD dwBytesRead = 0; /声明一个DWORD变量并赋初值0char szBuf1000; /声明字符数组作为数据缓存BOOL bRet = :ReadFile(hFile, szBuf, sizeof(szBuf), &dwBytesRead, NULL);if (bRet = NULL) /读取文件失败 MessageBox(读取文件失败 return;szBufdwBytesRead = 0; /为读出的字符串加上结束符0MessageBox(szBuf); /使用弹出对话框显示读取的

6、数据(3)WriteFile用来向指定文件写入数据,其语法格式如下所示:BOOL WriteFile( LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten,该函数用来向指定的文件中写入数据,其参数详解如下:需要写入数据的文件句柄。要写入文件的数据缓冲区。 nNumberOfBytesToWrite:本次操作要写入数据的字节数。 lpNumberOfBytesWritten:本次操作实际写入的字节数。下面是向一个已经打开的文件写入数据的范例:DWORD dwBytesWritten = 0;

7、/声明一个DWORD变量并赋初值0CString strTextData = “datadatadata”; /写入文件的数据缓存WriteFile(hFile, m_strTextData, strTextData.GetLength(), &dwBytesWritten, NULL); /向文件写数据if (bRet = FALSE | dwBytesWritten != strTextData.GetLength()向文件写入数据失败 /显示数据(4)CoseHandle用来关闭文件,其语法格式如下所示:BOOL CloseHandle( HANDLE hObject该函数用来关闭文件,

8、释放文件句柄,其参数详解如下: hObject:需要关闭的文件的文件句柄对象。下面是关闭一个已经打开的文件的范例:if (hFile != NULL | hFile != INVALID_HANDLE_VALUE) /判断文件句柄是否有效 CloseHandle(hFile); /关闭文件 hFile = NULL;注意:在使用CreateFile打开文件后,如果不调用CloseHandle进行文件句柄的释放操作,将导致句柄资源泄露。13.1.2 使用C运行时库C语言提供了一套C运行时库函数来进行文件的操作。缓冲文件系统中,有一个“文件指针”概念。每一个被使用的文件都在内存中开辟一个区来存放文

9、件的相关信息,比如:文件的名字、文件状态以及文件当前位置等。这些信息被保存在一个结构体变量中,该结构体类型由系统定义,名字为FILE。在stdio.h中,其定义如下:typedef struct short level; /缓冲区“满”或“空”的程度 unsigned flags; /文件状态标志 char fd; /文件描述符 unsigned char hold; /如无缓冲区不读取字符 short bsize; /缓冲区大小 unsigned char *buffer; /数据缓冲区的位置 unsigned char *curp; /指针当前的指向 unsigned istemple;

10、/临时文件,指示器 short token; /用于有效性检查FILE;C运行时库提供的文件操作函数主要有下面4个: fopen函数:实现了文件的创建或打开操作。 fread函数:实现了文件数据的读取操作。 fwrite:实现了写入文件数据的操作。 fclose:实现了关闭文件的操作。(1)fopen函数用来创建或打开文件,其语法格式如下所示:FILE *fopen( const char *filename, const char *mode );该函数用来创建或打开一个文件,其参数详解如下: filename:欲创建或打开的文件路径及文件名。 mode:文件打开的方式,代表流的形态,例如:

11、”r” 为输入打开一个文本文件;”w”为输出打开一个文本文件;”rb”为输入打开一个二进制文件;”wb”为输出打开一个二进制文件。 如果函数调用成功,将返回包含该文件相关信息的文件文件结构FILE的指针,否则将返回NULL。下面是打开一个记事本文件的范例:FILE* fp = fopen(test.txt, w+ /为读写建立一个新的文本文件if (fp = NULL) /打开文件失败打开文件失败(2)fread函数用来从文件读取数据,其语法格式如下:size_t fread( void *buffer, size_t size, size_t count, FILE *stream );该函

12、数用来从指定的文件中读取数据,其参数详解如下: buffer:用来接收数据的缓冲区。 size:欲读取的元素大小。 count:欲读取的元素个数。 stream:提供数据的文件指针。 函数调用成功将返回实际读取字节数。下面是从一个已经打开的文件读取数据的范例: /声明字符数组作为数据缓存size_t nBytesRead = 0;nBytesRead = fread(szBuf, 10, 1, fp); /从文件读取10个字节szBuf10 = 0; /为读出的字符串加上结束符 /使用弹出对话框显示读取的数据(3)fwrite函数用来向指定文件写入数据,其语法格式如下:size_t fwrit

13、e( const void *buffer, size_t size, size_t count, FILE *stream );要写入的字节数。要写入多少个size字节的数据项。欲写入数据的文件指针。 函数调用成功将返回实际写入的字节数。下面是向一个已经打开的文件中写入数据的范例:char szTextData = “datedatedate”; /数据缓存fwrite(szTextData, sizeof(szTextData), 1, fp); /写文件(4)fclose函数用来关闭文件,其语法格式如下:fclose( FILE *stream );该函数用来关闭文件,其参数详解如下:欲

14、关闭的文件结构对象。下面是关闭一个处于打开状态的文件的范例:if (fp != NULL) /判断文件指针有效性fclose(fp); /关闭文件13.1.3 使用CFile类CFile是MFC文件类的基类,该类将文件的操作进行了封装,通常,一个磁盘文件在CFile构造时自动打开并在析构时关闭。静态成员函数使你可以在不打开文件的情况下检查文件状态。通常在构造CFile对象时在其构造函数中指定要操作的物理文件对象以及具体的操作方式,CFile类提供的文件操作函数主要有下面4个: CFile:CFile:构造函数,实现了文件的打开操作。Read:实现了读取文件数据的操作。Write:实现了向文件写

15、入数据的操作。Close:实现了文件关闭操作。下面将详细的介绍这些函数并给出实际应用中常见的例子。(1)CFile:CFile为构造函数,用来加载文件,实现文件的打开操作,其语法格式如下:CFile:CFile( LPCTSTR lpszFileName, UINT nOpenFlags );该函数为CFile类的构造函数,它将在对象被创建时由系统自动调用,进行文件对象的打开或创建操作,其参数详解如下: lpszFileName:欲创建或打开的物理文件路径。 nOpenFlags:指定文件的访问权限欲共享标识,例如:modeRead 以只读的方式打开文件;modeReadWrite 以可读写的

16、方式打开文件。下面是使用其构造函数打开一个文件的范例:CFile file(, CFile:modeRead); /打开文件(2)CFile:Read函数用来读取文件数据,其语法格式如下:UINT CFile:Read( void* lpBuf, UINT nCount );该方法用来从文件中读取数据,其参数详解如下: lpBuf: nCount:本次操作要读取的数据量。 如果方法调用成功将返回本次操作实际读取的字节数,如果读到了文件末尾,返回的实际读取的字节数可能会小于nCount指定需要读取的字节数量。下面是使用该方法读取文件数据的范例: /声明字符数组作为数据缓存UINT uBytesR

17、ead = 0; /声请一个无符号整型变量uBytesRead = file.Read(szBuf, sizeof(szBuf); /读文件szBufuBytesRead = 0; /为读出的字符串加上结束符 /使用弹出对话框显示读取的数据(3)CFile:Write函数用来向文件写入数据,其语法格式如下:void CFile:Write( const void* lpBuf, UINT nCount );该方法向指定的文件对象中写入数据,其参数详解如下:欲写入文件的数据缓冲区。写入文件的数据字节数。下面是使用该方法向文件写入数据的范例: /数据缓存file.Write(szTextData,

18、sizeof(szTextData);(4)CFile:Close函数用来关闭文件对象,其语法格式如下:Close( );该方法用来关闭一个文件,即将句柄对象与实际的物理文件解除关联,并释放句柄对象。下面是关闭一个文件的范例:file.Close(); /关闭文件当心:如果使用CFile类对象打开一个文件后未调用Close方法进行关闭,会导致句柄资源泄露。13.1.4 使用CStdioFile类CStdioFile类继承自CFile,一个CStdioFile对象代表一个用运行时C库函数fopen打开的C运行时流式文件。当将一个换行符(0x0A)写入一个文本方式的CStdioFile 对象时,字

19、节对(0x0D,0x0A)被发送给该文件。当读一个文件时,字节对(0x0D,0x0A)被翻译为一个字节(0x0A)。与CFile一样,文件的打开操作是在构造函数中去完成的,在CStdioFile的构造式中需要指定欲创建或打开的文件,并指定对文件的操作方式,CStdioFile提供的文件操作函数主要有下面4个: CStdioFile: CStdioFile: ReadString: WriteString:(1)CStdioFile: CStdioFile为构造函数,用来加载文件,实现文件的打开操作,其语法格式如下:CStdioFile :CStdioFile( LPCTSTR lpszFile

20、Name, UINT nOpenFlags );其参数详解如下:欲操作的文件路径。文件的操作方式,其定义与父类CFile相同。下面是使用其构造函数加载一个文件的范例:CStdioFile stdFile(/打开文件(2)CStdioFile:BOOL CStdioFile :ReadString(CString& rString);该函数读取一行文本到缓冲区rString,遇到回车换行符停止读取。回车和换行符不读到rString,而且末尾也不添加“0”。CString strBuf;if (!stdFile.ReadString(strBuf) /读一行读文件失败MessageBox(strB

21、uf);(3)CStdioFile: WriteString函数用来向文件写入数据,其语法格式如下:void CStdioFile:WriteString( LPCTSTR lpsz );该函数将缓冲区lpsz中的数据写入与CStdioFile对象关联的文件中。 lpsz:欲写入文件的数据缓冲区结束字符“0”不被写入该文件。lpsz 中的所有换行符都被以一个硬回车换行符对写入该文件,即“n”被转化成“rn”写入到文件里。CString strTextData = “datetatedate”; /数据缓存stdFile.WriteString(strTextData);(4)Close函数用来

22、关闭文件,此函数继承自父类CFile,下面是使用该方法关闭文件的范例:stdFile.Close(); /关闭文件13.1.5 案例:使用4种文件操作方式读写文件该小节我们来结合一个实际例子,介绍文件读写的几种常用方法。(1)创建一个基于对话框的工程。启动VC+ 6.0单击Projects选项卡,在列表框中选择MFC AppWizard (exe),在Project name文本框中输入工程名FileOperateTest,然后在Location文本框输入该工程名所在的文件夹。如图13.1所示。单击OK按钮。在MFC AppWizard Step 1对话框中选择Dialog based选项。如

23、图13.2所示。最后单击Finish按钮。创建一个基于对话框的工程完成。图13.1 选择工程类型和设置工程名以及工程路径图13.2 选择基本对话框选项(2)在VC主界面的工作区中单击ResourceView选项卡,展开工作区中的Dialog项,双击IDD_FILEOPERATETEST_DIALOG,打开主对话框的资源编辑面板。在该面板中加入8个按钮控件、一个文本框控件。具体情况如表13.1所示。表13.1 对话框资源控件ID控件标题关联变量IDC_EDIT_DATA无m_strTextDataIDC_BUTTON_API_WRITE使用API写IDC_BUTTON_API_READ使用API

24、读IDC_BUTTON_C_WRITE使用C运行库写IDC_BUTTON_C_READ使用C运行库读IDC_BUTTON_CFILE_WRITE使用CFile写IDC_BUTTON_CFILE_READ使用CFile读IDC_BUTTON_CSTDIOFILE_WRITECStdioFile写IDC_BUTTON_CSTDIOFILE_READCStdioFile读在主对话框资源编辑面板中双击“使用API打开”按钮,在弹出的Add Member Function对话框中单击OK按钮,完成增加该按钮的单击消息响应函数void CFileOperateTestDlg:OnButtonApiOpen(),其他按钮的单击响应函数的添加方式相同。如图13.3所示:图13.3 添加按钮响应函数(3)打开FileOperateTestDlg.cpp文件,编辑修改函数void CFileOperateTestDlg:

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2