基于WINAPI的文件操作
2009-09-03 21:17
239 查看
原文地址 http://read.newbooks.com.cn/info/126910.html
WINAPI提供了两种文件操作函数,一组是为了和16位程序兼容,这种函数比较简单;而另一种是专门为32位程序设计,在使用时就显得麻烦些,下面我就把这两组函数一一介绍:
一、和16位程序兼容的一组函数
LPCSTR lpPathName, // 文件名
int iReadWrite //文件存取方式
);
功能:打开文件,成功返回其句柄,与此类似的还有个OpenFile()函数,可自行查阅帮助文件。
参数说明:lpPathName是要打开的文件名,iReadWrite是文件存取方式,主要有3种方式:
OF_READ:以只读方式打开
OF_READWRITE:以读写方式打开
OF_WRITE:以只写方式打开
还有如 OF_SHARE_COMPAT 等属性,由于不太常用,为里就不一一介绍了。
功能:关闭文件,成功返回0
参数说明:hFile:要关闭的句柄
LPVOID lpBuffer, // 保存数据的缓冲区
UINT uBytes // 要读取的长度
);
功能:读文件,返回实际读取的字符数,与此类似的还有个_hread()函数,可自行查阅帮助文件。
LPCSTR lpBuffer, // 保存数据的缓冲区
UINT uBytes // 要写的长度
);
功能:写文件,返回实际写的字符数,与此类似的还有个_hwrite()函数,可自行查阅帮助文件。
LONG lOffset, // 移动的量
int iOrigin // 移动的基准位置
);
功能:移动文件的读写位置,成功返回移动后的文件读写位置
参数说明:iOrigin的取值是以下三种情况之一:
FILE_BEGIN:文件头部
FILE_CURRENT:文件当前位置
FILE_END:文件尾部
int iAttribute // 文件属性
);
功能:创建文件,成功返回其句柄
参数说明:文件属性是以下值的和:
0:普通文件
1:只读文件
2:隐含文件
4:系统文件
这几个函数的用法和所列的BCB库函数差不多,建议使用BCB的库函数。可参阅前文基于BCB库函数的文件操作。
二、32位程序专用文件操作函数
WINAPI中还有一组32位程序专用的文件操作函数,这也是M$推荐使用的函数,但我还是推荐使用BCB的库函数,除非功能不足,由于此类函数众多,我就只对重要的作简要介绍,如果真需要时可查询帮助系统。
WINAPI提供了两种文件操作函数,一组是为了和16位程序兼容,这种函数比较简单;而另一种是专门为32位程序设计,在使用时就显得麻烦些,下面我就把这两组函数一一介绍:
一、和16位程序兼容的一组函数
函数 | 说明 | 对应BCB库函数 |
_lopen() | 打开文件 | FileOpen() |
_lclose() | 关闭文件 | FileClose() |
_lread() | 读文件 | FileRead() |
_lwrite() | 写文件 | FileWrite() |
_llseek() | 文件定位 | FileSeek() |
_lcreat() | 创建文件 | FileCreate() |
⑴_lopen
原型:HFILE _lopen(LPCSTR lpPathName, // 文件名
int iReadWrite //文件存取方式
);
功能:打开文件,成功返回其句柄,与此类似的还有个OpenFile()函数,可自行查阅帮助文件。
参数说明:lpPathName是要打开的文件名,iReadWrite是文件存取方式,主要有3种方式:
OF_READ:以只读方式打开
OF_READWRITE:以读写方式打开
OF_WRITE:以只写方式打开
还有如 OF_SHARE_COMPAT 等属性,由于不太常用,为里就不一一介绍了。
⑵_lclose()
原型:HFILE _lclose( HFILE hFile);功能:关闭文件,成功返回0
参数说明:hFile:要关闭的句柄
⑶_lread()
原型:UINT _lread( HFILE hFile, // 文件句柄
LPVOID lpBuffer, // 保存数据的缓冲区
UINT uBytes // 要读取的长度
);
功能:读文件,返回实际读取的字符数,与此类似的还有个_hread()函数,可自行查阅帮助文件。
⑷_lwrite()
原型:UINT _lwrite( HFILE hFile, // 文件句柄LPCSTR lpBuffer, // 保存数据的缓冲区
UINT uBytes // 要写的长度
);
功能:写文件,返回实际写的字符数,与此类似的还有个_hwrite()函数,可自行查阅帮助文件。
⑸_llseek()
原型:LONG _llseek( HFILE hFile, // 文件句柄LONG lOffset, // 移动的量
int iOrigin // 移动的基准位置
);
功能:移动文件的读写位置,成功返回移动后的文件读写位置
参数说明:iOrigin的取值是以下三种情况之一:
FILE_BEGIN:文件头部
FILE_CURRENT:文件当前位置
FILE_END:文件尾部
⑹_lcreat()
原型:HFILE _lcreat( LPCSTR lpPathName, //要创建的文件名int iAttribute // 文件属性
);
功能:创建文件,成功返回其句柄
参数说明:文件属性是以下值的和:
0:普通文件
1:只读文件
2:隐含文件
4:系统文件
这几个函数的用法和所列的BCB库函数差不多,建议使用BCB的库函数。可参阅前文基于BCB库函数的文件操作。
二、32位程序专用文件操作函数
WINAPI中还有一组32位程序专用的文件操作函数,这也是M$推荐使用的函数,但我还是推荐使用BCB的库函数,除非功能不足,由于此类函数众多,我就只对重要的作简要介绍,如果真需要时可查询帮助系统。
函数 | 功能 |
CreateFile() | 创建或打开一个文件 |
CopyFile(),CopyFileEx() | 拷贝文件 |
CreateDirectory(),CreateDirectoryEX() | 创建目录 |
DeleteFile() | 删除文件 |
GetDriveType() | 获取驱动器类型 |
GetFileAttributes(),GetFileAttributesEx() | 获取文件属性 |
GetFileSize() | 获取文件字节大小 |
GetFullPathName() | 取得文件全路径文件名 |
GetShortPathName() | 取得文件8.3格式全文件名 |
GetTempFileName() | 生成一个临时文件名 |
GetTempPath() | 取临时文件名的路径 |
LockFile(),LockFileEx() | 锁文件 |
MoveFileEx() | 移动或更名文件 |
ReadFile(),ReadFileEx() | 读文件 |
SearchPath() | 搜寻文件 |
SetFileAttributes() | 设置文件属性 |
SetFilePoint() | 设置文件读写位置 |
UnLockFile(),UnLockFileEx() | 对文件解除锁定 |
WriteFile(),WriteFileEx() | 写文件 |
相关文章推荐
- 基于WINAPI的文件操作
- 基于Visual C++6.0工具下的声音文件操作1
- C语言《学生综合管理系统》基于链表和文件操作
- 基于C的文件操作
- (转载)基于Visual C++6.0的声音文件操作
- 基于文件描述符的文件操作(非缓冲)
- 文件操作二:基于C++语言的文件操作
- 基于C的文件操作
- 基于C/C++/BCB的文件操作
- 基于Windows server 2003 卷影副本的文件级恢复操作
- C基于流fstream的文件操作
- 基于html5 File API文件操作
- 【转】C/C++文件操作(一):基于 C 的文件操作
- 基于C,C++的文件操作 20051027
- Python基于FTP模块实现ftp文件上传操作示例
- 一起talk C栗子吧(第一百四十一回:C语言实例--文件操作:基于文件指针一)
- 一起talk C栗子吧(第一百四十二回:C语言实例--文件操作:基于文件指针二)
- C#中基于流的XML文件操作笔记
- 基于BCB的文件操作
- 基于Java的XML文件模拟数据库进行增删改查操作