`

基于WINAPI的文件操作

 
阅读更多

基于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() 写文件
分享到:
评论

相关推荐

    C/C++文件操作手册

    1、基于C的文件操作; 2、基于C++的文件操作; 3、基于WINAPI的文件操作; 4、基于BCB库的文件操作; 5、特殊文件的操作。

    文件操作总结1

    2、基于C++的文件操作 3、基于WINAPI的文件操作 4、基于BCB库的文件操作 5、特殊文件的操作

    基于QT(C++)实现安全卫士(软件行为分析)【100012955】

    testCode:测试程序,主要包含一些我们需要抓取的 API 和异常操作 PFDLL:定义了需要 HOOK 的 winAPI 和替换的函数 syringe:注射器程序,主要将 PFDLL 程序中的替换函数替换测试程序 testCode 中的 API ...

    实验三_TTY发送程序文件.doc

    TTY 发送程序是一种串口通信程序,通过 WinAPI 编程实现,基于 VC++ 的单文档应用程序模板。该程序的主要功能是将用户在主界面窗口中键入的 ASCII 字符通过串口发送到“实验二”TTY 接收程序。 二、实验环境 本...

    AkelPad-4.8.5-setup

    空字符,使用 FileSystemObject 对象来操作文件,创建快捷方式, 使用 WshShell 对象来操作 Windows 注册表,或使用 WshNetwork 对 象来运行网络功能,此外,您可以创建和执行利用一个支持自动化的 外部应用程序 (如...

    并行计算课程设计(代码+执行文件+文档)

    在Java中,创建用户自己的线程类,使用启动线程的start()方法启动线程对象,使之从新建状态转入就绪状态,定义线程操作的run()方法,并定义新的run()方法覆盖原来的run()方法。 伪代码如下: And thread1=new And(1,...

    并行计算课程设计(报告+代码+可执行文件)

    在Java中,创建用户自己的线程类,使用启动线程的start()方法启动线程对象,使之从新建状态转入就绪状态,定义线程操作的run()方法,并定义新的run()方法覆盖原来的run()方法。 伪代码如下: And thread1=new And(1,...

    基于SIP开发软件电话的一些资源(转自YOUTOO)

    同样,将oSIP2版本3.0.1 src目录下的Osipparser2目录下的所有文件都拷到我们刚创建的工程的根目录下,在VC6上操作: Project-Add To Project-Files 将所有...

    visual C++_Turbo C串口通信编程实践

    里面讲了MSComm控件 、 WinAPI 串口通信、CSerial类,例子很详实,每一步操作都有解释。作者是龚建伟,有一个个人主页www.gjwtech.com,讲串口通信的内容比较多,还行,大家可以先看看这个主页。 本书目录 第1章轻松...

    DELPHI技巧集(集合各种开发源码)

    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...

    HGE_系列教材(1-9)

    3)技术优势--- 基于Direct3D API 有较好的性能和特性 4)免费--- 对于个人或者商业用户都免费,遵循zlib/libpng license 5)代码高度的一致性--- 代码是否具有一致性,是衡量代码质量的标准之一(《Co de Reading: ...

    MFC的程序框架剖析

    extern "C" int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // call shared/exported WinMain return AfxWinMain(hInstance, hPrevInstance, lpCmdLine...

Global site tag (gtag.js) - Google Analytics