windows程序设计6

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

lpFileName:是以空值结尾的字符串的指针,包含要创建、打开或截取的文件、管 道、通信资源、磁盘设备或控制台的名称。 dwDesAccess:指定文件的输出类型,具体见表所示。
值 0 GENERIC_READ
意 义 允许应用程序查询设备属性,而实际上不访问设备 指定读取属性,可以从文件中读取数据,可以移动文件指针
• 打开和关闭文件
HANDLE CreateFile( LPCTSTR lpFileName, //要创建或打开对象的名称 DWORD dwDesAccess, //文件存取方式 DWORD dwShareMode, //共享属性 LPSECURITY_ATTRIBUTES lpSecurityAttributes, //安全 DWORD dwCreationDisposition, //文件存在或不存在时操作系统采取行动 DWORD dwFlagsAndAttributes, //新文件的属性 HANDLE hTemplateFile );//一个文件模板的句柄
•读取文件
BOOL ReadFile( HANDLE hFile, // 文件指针 LPVOID lpBuffer, // 数据缓冲 DWORD nNumberOfBytesToRead, // 读取的字节数
LPDWORD lpNumberOfBytesRead, // 接收要读取的字节数 LPOVERLAPPED lpOverlapped // 覆盖缓冲 );
OPEN_ALWAYS TRUNCATE_EXISTING
dwFlagsAndAttributes:指定文件的属性和标志。该参数的属性值较多,除 属性FILE_ATTRIBUTE_NORMAL外,都可以任意组合。表中列出了较常用 的几个,
属 性 FILE_ATTRIBUTE_ARCHIVE FILE_ATTRIBUTE_ENCRYPTED FILE_ATTRIBUTE_HIDDEN FILE_ATTRIBUTE_NORMAL FILE_ATTRIBUTE_READONLY
•锁定文件和解锁
BOOL LockFile (
HANDLE hFile, // 文件指针 DWORD dwFileOffsetLow, // 加锁的开始位置 DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow, //加锁区域大小 DWORD nNumberOfBytesToLockHigh); 解锁函数UnlockFile和它参数一样。
BOOL CopyFile(LPCTSTR lpExistingFileName,
LPCTSTR lpNewFileName, BOOL bFailIfExists ); lpExistingFileName:是已存在的文件名及其路径。 lpNewFileName:是要复制的文件名及其路径。
bFailIfExists:指定如果存在与参数lpNewFileName同名的文件, 该采取的操作。若设置为TRUE,函数调用失败;若设置为 FALSE,函数调用成功,覆盖现有文件。 如果函数调用成功则返回TRUE,否则返回FALSE。
hFile:是指向要打开文件的指针。
•读取文件 lpBuffer:是接收来自文件数据缓冲区的指针。
nNumberOfBytesToRead:指从文件中读取的字节数。 lpNumberOfBytesRead:用于接收要读取的字节数。 lpOverlapped:是指向OVERLAPPED结构的指针,如 果hFile所指的文件是用FILE_FLAG_OVERLAPPED 创 建的,则需要用到此结构。如果用 FILE_FLAG_ OVERLAPPED创建hFile,而且lpOverlapped不为 NULL,则读取操作从OVERLAPPED结构所指的偏移 量位置处开始,函数ReadFile可能在完成读取操作之前 返回。如果未用FILE_FLAG_OVERLAPPED创建hFile, 而且lpOverlapped不为NULL,则函数ReadFile在完成读 取前不会返回。
GENERIC_WRITE
指定写入属性,可以向文件中写入数据,可以移动文件指针
dwShareMode:确定是否且如何共享这个文件,可以采用下表所示的值。
值 0 FILE_SHARED_DELETE FILE_SHARED_READ FILE_SHARED_WRITE 禁止文件共享 仅用于Windows 2000中,后续对象打开操作仅限于删除操作 可以对文件执行其他的打开操作,以进行读取 可以对文件执行其他的打开操作,以进行写入 意 义
源自文库
•FindFirstFile函数
此函数用于检查指定路径的主文件夹及其子目录和子文件夹。
HANDLE FindFirstFile
(LPCTSTR lpFileName,
lpSecurityAttributes:是指向SECURITY_ATTRIBUTES结构的指针,指定了 目录的安全属性,但要求文件系统支持如NTFS的格式。Windows 98不支持此 属性,在函数调用时应设置为NULL。
dwCreationDisposition:确定文件存在或不存在时所采取的动作。 这个参数必须为下表所示的值之一。
返回值 如果函数调用成功则返回打开文件的句柄。如果调用前文 件已经存在,且dwCreation Disposition参数使用 CREATE_ALWAYS或OPEN_ALWAYS,则返回ERROR_ ALREADY_ EXISTS。函数调用失败则返回 INVALID_HANDLE_VALUE。
•读取、写入、移动和删除文件
含 义 文件是存档类型,可用于备份或删除 文件或目录是加密的。如果指定属性有FILE_ ATTRIBUTE_SYSTEM ,那么此标志没有作用 文件是隐藏的 文件没有属性,此标志只有在单独使用时才有效 文件是只读属性
FILE_ATTRIBUTE_SYSTEM
文件为系统文件
hTemplateFile:用于存取模板文件的句柄。模板文件为正在创建的文件提供扩展属性。
值 CREATE_NEW CREATE_ALWAYS OPEN_EXISTING 意 义 创建新文件。如文件已存在,函数调用失败 创建新文件。如文件已存在,覆盖旧文件 打开文件。如文件已存在,函数调用失败 打开文件。如文件已存在,函数创建一个文件,其 dwCreationDisposition属性是CREATE_NEW 打开文件。一旦打开,就截断文件,使其大小为零。调用 过程必须至少用GENERIC_WRITE权限打开。如果文件 已存在,函数调用失败
属 性 FILE_BEGIN FILE_CURRENT FILE_END
含 义 起始点为零或文件的开始 文件指针的当前值为起始点 当前文件末尾为起始点
返回值 如果函数调用成功,则返回文件指针的低32位。如果参数lpDistanceToMoveHigh不为NULL ,则返回文件指针的高32位。若函数调用失败则返回0xFFFFFFFF。 在每次调用函数CreateFile之后,在退出作用之前都应调用函数CloseHandle,关闭打开的对 象句柄,使前面的函数调用有效。这个函数使得对象句柄失效,并减少对象句柄计数和执 行对象保存检查。如果关闭对象的最后一个句柄,则从系统中删除对象。
•查找文件
此函数用于查找给定路径或默认路径指定的文件。 DWORD SearchPath ( LPCTSTR lpPath, //指定查找文件的路径 LPCTSTR lpFileName,//需查找文件的名称 LPCTSTR lpExtension, //文件的扩展名 DWORD nBufferLength, //接受合法路径和文件名的缓冲区的长度 LPTSTR lpBuffer, //缓冲区指针,包含已找到文件的有效路径和文件名 LPTSTR *lpFilePart);//包含路径中最后一个反斜杠“\”之后的字符地址
•写入文件
BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped );
•移动文件指针
•关闭文件句柄
CloseHandle 此函数用于关闭目前打开的对象句柄。
BOOL CloseHandle( HANDLE hObject);
参数 hObject:对象的句柄。 返回值 如果函数调用成功则返回TRUE,否则返回FALSE。
•移动文件
此函数用于将文件从一处移到另一处。
BOOL MoveFile(LPCTSTR lpExistingFileName,
•返回值
如果函数调用成功则返回路径的字符长度。如果返回值大于nBufferLength, 则表明容纳路径实际需要的字符长度。如果函数调用不成功则返回零。 使用函数FindFirstFile查找与指定查找文件名匹配的第一个文件的目录。此函 数除了检查指定路径的主文件夹之外,还检查子目录名称和文件夹。应用程序 可以重复调用FindNextFile函数,检索匹配查找文件名的所有文件和目录。
Windows程序设计基础
第六章
文件操作和内存映射文件
操作文件是每个应用程序都要做的事情。 保存和获取信息方式:磁盘文件和注册表
•6.1文件操作
文件的输入输出是操作系统的重要部分。
CFile类:读写和管理磁盘文件的类
API函数:与底层设备(COM口、设备驱动)交互
• 创建和读写文件 使用API函数读写文件时,首先使用CreateFile 函数创建文件对象(打开文件),调用成功返回文 件句柄;然后以此句柄调用ReadFile和 WriteFile函数,进行实际的读写操作。最后调 用CloseHandle函数关闭不再使用的文件对象 句柄。
在第一次打开文件时,Windows在文件的开头存放一个文 件指针,文件指针所指的位置就是下一次读取或写入的地 方。随着字节的读取或写入,Windows也相应增加文件指 针。应用程序可以利用函数SetFilePointer来移动文件指针 的位置。
执行读取和写入的函数是ReadFile和WriteFile。这两个函 数在文件指针位置处读取和写入指定数量的字节数,并不 进行格式化数据。下面对这两个函数分别进行介绍。
•删除文件
DeleteFile 此函数用来删除一个已存在并指定路径的文件。 BOOL DeleteFile(LPCTSTR lpFileName); 参数 lpFileName:是一个指向字符串的指针,字符串中存储的是包含具体路径的文件名。 返回值 如果函数调用成功则返回TRUE,否则返回FALSE。
hFile:是指向要打开文件的指针。 lDistanceToMove:指移动文件指针的字节数,若为正值则在文件中把指针向前移动, 若为负值则向后移动。 lpDistanceToMoveHigh:要移动的64位距离的高32位指针。如果此参数值为NULL,则 函数只能在小于232-2的文件上使用。如果指定了这个参数,文件的大小最大可为264-2 。 dwMoveMethod:指定了文件移动的起始点,可以为下表所给出的值之一。
LPCTSTR lpNewFileName ); 参数 lpExistingFileName:为要移动的文件名及其路径。 lpNewFileName:是移动目的地的文件名及其路径。
返回值
如果函数调用成功则返回值为TRUE,否则返回FALSE。
•复制文件
此函数用于复制一个文件到指定的目录及文件名中。
此函数将移动文件指针到指定的位置。 DWORD SetFilePointer( HANDLE hFile, //文件句柄 LONG lDistanceToMove, //要移动距离 PLONG lpDistanceToMoveHigh, //移动距离高32位,一般NULL DWORD dwMoveMethod );//运动模式
相关文档
最新文档