基于WINAPI的文件操作
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() |
写文件 |
分享到:
相关推荐
1、基于C的文件操作; 2、基于C++的文件操作; 3、基于WINAPI的文件操作; 4、基于BCB库的文件操作; 5、特殊文件的操作。
2、基于C++的文件操作 3、基于WINAPI的文件操作 4、基于BCB库的文件操作 5、特殊文件的操作
testCode:测试程序,主要包含一些我们需要抓取的 API 和异常操作 PFDLL:定义了需要 HOOK 的 winAPI 和替换的函数 syringe:注射器程序,主要将 PFDLL 程序中的替换函数替换测试程序 testCode 中的 API ...
TTY 发送程序是一种串口通信程序,通过 WinAPI 编程实现,基于 VC++ 的单文档应用程序模板。该程序的主要功能是将用户在主界面窗口中键入的 ASCII 字符通过串口发送到“实验二”TTY 接收程序。 二、实验环境 本...
空字符,使用 FileSystemObject 对象来操作文件,创建快捷方式, 使用 WshShell 对象来操作 Windows 注册表,或使用 WshNetwork 对 象来运行网络功能,此外,您可以创建和执行利用一个支持自动化的 外部应用程序 (如...
在Java中,创建用户自己的线程类,使用启动线程的start()方法启动线程对象,使之从新建状态转入就绪状态,定义线程操作的run()方法,并定义新的run()方法覆盖原来的run()方法。 伪代码如下: And thread1=new And(1,...
在Java中,创建用户自己的线程类,使用启动线程的start()方法启动线程对象,使之从新建状态转入就绪状态,定义线程操作的run()方法,并定义新的run()方法覆盖原来的run()方法。 伪代码如下: And thread1=new And(1,...
同样,将oSIP2版本3.0.1 src目录下的Osipparser2目录下的所有文件都拷到我们刚创建的工程的根目录下,在VC6上操作: Project-Add To Project-Files 将所有...
里面讲了MSComm控件 、 WinAPI 串口通信、CSerial类,例子很详实,每一步操作都有解释。作者是龚建伟,有一个个人主页www.gjwtech.com,讲串口通信的内容比较多,还行,大家可以先看看这个主页。 本书目录 第1章轻松...
29 Delphi23_io.htm 在DELPHI2.0/3.0中直接操作端口 3K 30 Delphivspb.htm 开发AS/400应用系统PB5与Delphi3的比较 9K 31 Device_isok.htm 检查驱动器是否就绪 1K 32 Dtccw03.htm 资源文件在DELPHI中的使用 10K...
3)技术优势--- 基于Direct3D API 有较好的性能和特性 4)免费--- 对于个人或者商业用户都免费,遵循zlib/libpng license 5)代码高度的一致性--- 代码是否具有一致性,是衡量代码质量的标准之一(《Co de Reading: ...
extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // call shared/exported WinMain return AfxWinMain(hInstance, hPrevInstance, lpCmdLine...