Windows下的文件处理函数

转载 2012年03月21日 20:33:26

在标准C中,利用C语言的库函数fopen,fclose,fread,fwrite和feek来对文件的输入和输出进行操作。在Win32 API中,又可以有一系列函数来进行文件操作,当然,也可以用标准C函数。
对于一般文件的打开和保存,读者会想到以前介绍的通用对话框库,其中包括 OpenFile
对话框和SaveFile对话框。它们巧妙地避开了有关系统的文件名分析,简化了步骤,所以,在一般情况下使用它们可以不用关心很多细节的东西,实现自己想要的功能。
1. 创建和打开文件
创建任何一种文件只需要用到API函数CreateFile,应用程序可以通过该函数指定文件的格式为读取、写入或两者皆可,也可以指定是否为共享文件。如果该文件名已经存在,则将其打开。下面对函数CreateFile进行详细的介绍:
说明:本函数用于创建一个指定类列的文件。
原型 :HANDLE CreateFile(LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes
DWORD dwCreationDisposition
DWORD dwFlagsAndAttributes
HANDLE hTemplateFile);
参数:lpFileName:是以空值结尾的字符串的指针,包含要创建、打开或截取的文件、管道、通信资源、磁盘设备或控制台的名称。
dwDesAccess:指定文件的输出类型。
dwShareMode:确定是否且如何共享这个文件。
lpSecurityAttributes:是指向SECURITY_ATTRIBUTES结构的指针,指定了目录的安全属性,但要求文件系统支持如NTFS的格式。Windows 98不支持此属性,在函数调用时应设置为NULL。
dwCreationDisposition:确定文件存在或不存在时所采取的动作。
dwFlagsAndAttributes:指定文件的属性和标志。
hTemplateFile:用于存取模板文件的句柄,模板文件为正在创建的文件提供扩展属性。
返回值
如果函数调用成功则返回打开文件的句柄。如果调用前文件已经存在,且
dwCreationDisposition参数使用CREATE_ALWAYS或OPEN_ALWAYS,
则返回ERROR_ALREADY_EXISTS。函数调用失败则返回INVALID_HANDLE_VALUE。
例如,创建一个在C:目录下名为"FILE.DOC"(Word文档)的文件的代码如下,其中hFile为HANDLE类型。
hFile=CreateFile("C:\\FILE.DOC",GENERIC_READ|GENERIC_WRITE.C,
NULL,OPEN_ALWAYS,FILE_ATTRISUTE_NORMAL,NULL);
2. 读取、写入和删除文件
在第一次打开文件时,Windows在文件的开头存放一个文件指针,文件指针所指的位置就是下一次读取或写入的地方。随着字节的读取或写入,Windows也相应增加文件指针。应用程序可以利用函数SetFilePointer来移动文件指针的位置。
执行读取和写入的函数是ReadFile和WriteFile。这两个函数在文件指针位置处读取和写入指定数量的字节数,并不进行格式化数据。下面对这两个函数分别进行介绍。
1)ReadFile
说明:从文件指针位置处读取指定数量的字节数。
原型: BOOL ReadFile(HANDLE hFile, //文件指针 
LPVOID lpBuffer, //数据缓冲
DWORD nNumberOfBytesToRead, //读取的字节数
LPDWORD lpNumberOfBytesRead, //接收要读取的字节数
LPOVERLAPPED lpOverlapped //覆盖缓冲)
参数 hFile: 是指向要打开文件的指针。
lpBuffer: 是接收来自文件数据缓冲区的指针。
nNumberOfBytesToRead: 指从文件中读取的字节数。
lpNumberOfBytesRead: 用于接收要读取的字节数。
lpOverlapped: 是指向OVERLAPPED结构的指针,如果hFile所指向的文件是用FILE_FLAG_OVERLAPPED创建的,则需要用到此结构。
返回值:如果函数调用成功则返回值为TRUE,否则为FALSE。
2)WriteFile
说明:此函数是用来向文件指针位置处写入指定数量的字节数。
BOOL WriteFile (HANDLE hFile, 
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped);
其参数设置与读取文件函数ReadFile大同小异,只需要将读取改成写入即可,返回值也很相似,在这里就不多介绍了。
3) DeleteFile
说明:此函数用来删除一个已存在并指定路径的文件。
原型: BOOL DeleteFile(LPCTSTR lpFileName);
参数:lpFileName是一个指向字符串的指针,字符串中存储的是包含有具体路径的文件名。
返回值:如果函数调用成功则返回TRUE,否则返回FALSE。
4) CloseHandle
说明:此函数用于关闭目前打开的对象句柄
原型:BOOL CloseHandle(HANDLE hObject);
参数: hObject为对象的句柄。
返回值: 如果函数调用成功则返回TRUE,否则返回FALSE。

打开文件open()函数的使用方法详解--C语言函数

头文件:#include    #include    #include 定义函数:     int open(const char * pathname, int flags);     i...
  • linux_loajie
  • linux_loajie
  • 2015年02月23日 16:23
  • 54338

Windows API函数删除指定文件目录下所有内容vc6.0通过

// FileOpt.cpp : Defines the entry point for the console application. // #include "stdafx.h" #incl...
  • zww0815
  • zww0815
  • 2012年09月06日 21:57
  • 3327

利用WINDOWS标准函数来删除INI文件内容

今天在VC论坛看到有朋友问如何利用Windows提供的函数来删除ini文件的内容,Windows没有对ini文件内容进行删除的标准函数,但是我们可以利用 WritePrivateProfileStri...
  • snsins
  • snsins
  • 2002年08月23日 09:38
  • 995

C语言remove()函数:删除文件或目录

头文件:#include remove()函数用于删除指定的文件,其原型如下:     int remove(char * filename); 【参数】filename为要删除的文件名,可以为...
  • Lina_ACM
  • Lina_ACM
  • 2016年07月13日 08:51
  • 5871

Windows文件操作(删除过时文件)

概述     程序在运行时会生成很多临时文件(如日志文件),这些文件隔断时间就会被删除。需要用到一些文件操作函数和时间获取函数     windows系统API:     打开文件     F...
  • niu2212035673
  • niu2212035673
  • 2017年09月03日 00:06
  • 131

Windows下的文件处理函数

在标准C中,利用C语言的库函数fopen,fclose,fread,fwrite和feek来对文件的输入和输出进行操作。在Win32 API中,又可以有一系列函数来进行文件操作,当然,也可以用标准C函...
  • mafuli007
  • mafuli007
  • 2012年03月21日 20:33
  • 1798

Windows文件、目录操作函数

1、文件操作函数       CreateFile();//创建或打开文件       ReadFile();//从文件读       WriteFile();//向文件写       SetFile...
  • milanleon
  • milanleon
  • 2014年01月10日 17:44
  • 1681

走进windows编程的世界-----消息处理函数(2)

一 WM_PAINT消息 1 WM_PAINT的产生   由于窗口的互相覆盖等,产生需要绘制的区域,那么会产生WM_PAINT消息.   一般情况下,不直接发送WM_PAINT消息,通过API声明需要...
  • jsh13417
  • jsh13417
  • 2014年07月06日 17:40
  • 2427

Windows文件处理函数 - CloseHandle

VB声明Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long说...
  • prsniper
  • prsniper
  • 2009年09月18日 09:52
  • 435

Windows驱动开发之文件操作

内核态文件操作 内核态字符串操作 内核态动态内存申请/释放
  • enjoy5512
  • enjoy5512
  • 2016年07月06日 15:02
  • 2316
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Windows下的文件处理函数
举报原因:
原因补充:

(最多只允许输入30个字)