原文地址 http://read.newbooks.com.cn/info/126910.html
WINAPI提供了两种文件操作函数,一组是为了和16位程序兼容,这种函数比较简单;而另一种是专门为32位程序设计,在使用时就显得麻烦些,下面我就把这两组函数一一介绍:
一、和16位程序兼容的一组函数
函数 | 说明 | 对应BCB库函数 |
_lopen() | 打开文件 | FileOpen() |
_lclose() | 关闭文件 | FileClose() |
_lread() | 读文件 | FileRead() |
_lwrite() | 写文件 | FileWrite() |
_llseek() | 文件定位 | FileSeek() |
_lcreat() | 创建文件 | FileCreate() |
原型:HFILE _lopen(
LPCSTR lpPathName, // 文件名
int iReadWrite //文件存取方式
);
功能:打开文件,成功返回其句柄,与此类似的还有个OpenFile()函数,可自行查阅帮助文件。
参数说明:lpPathName是要打开的文件名,iReadWrite是文件存取方式,主要有3种方式:
还有如 OF_SHARE_COMPAT 等属性,由于不太常用,为里就不一一介绍了。
原型:HFILE _lclose( HFILE hFile);
功能:关闭文件,成功返回0
参数说明:hFile:要关闭的句柄
原型:UINT _lread( HFILE hFile, // 文件句柄
LPVOID lpBuffer, // 保存数据的缓冲区
UINT uBytes // 要读取的长度
);
功能:读文件,返回实际读取的字符数,与此类似的还有个_hread()函数,可自行查阅帮助文件。
原型:UINT _lwrite( HFILE hFile, // 文件句柄
LPCSTR lpBuffer, // 保存数据的缓冲区
UINT uBytes // 要写的长度
);
功能:写文件,返回实际写的字符数,与此类似的还有个_hwrite()函数,可自行查阅帮助文件。
原型:LONG _llseek( HFILE hFile, // 文件句柄
LONG lOffset, // 移动的量
int iOrigin // 移动的基准位置
);
功能:移动文件的读写位置,成功返回移动后的文件读写位置
参数说明:iOrigin的取值是以下三种情况之一:
原型:HFILE _lcreat( LPCSTR lpPathName, //要创建的文件名
int iAttribute // 文件属性
);
功能:创建文件,成功返回其句柄
参数说明:文件属性是以下值的和:
这几个函数的用法和所列的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() | 写文件 |