`
qzriso
  • 浏览: 242544 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Windows API实现文件操作

阅读更多

下面是windows中提供的对于文件进行操作的API函数及其功能:

Windows API函数  功能
CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的
CompareFileTime 根据FILETIME结构的信息,对比两个文件的时间
CopyFile 复制文件。与vb的filecopy命令相似
CreateFile 这是一个全功能的函数,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台
DeleteFile 删除指定文件
FindClose 关闭由FindFirstFile函数创建的一个搜索句柄
FindFirstFile 根据文件名查找文件
FindNextFile 根据调用FindFirstFile函数时指定的一个文件名查找下一个文件
FlushFileBuffers 针对指定的文件句柄,刷新内部文件缓冲区
GetBinaryType 判断文件是否可以执行
GetFileAttributes 判断指定文件的属性
GetFileInformationByHandle 这个函数提供了获取文件信息的一种机制——在一个BY_HANDLE_FILE_INFORMATION结构中装载与文件有关的信息
GetFileSize 判断文件长度
GetFileTime 取得指定文件的时间信息
GetFileType 在给出文件句柄的前提下,判断文件类型
GetFileVersionInfo 从支持版本标记的一个模块里获取文件版本信息
GetFileVersionInfoSize 针对包含了版本资源的一个文件,判断容纳文件版本信息需要一个多大的缓冲区
GetShortPathName 获取指定文件的短路径名
GetTempFileName 这个函数包含了一个临时文件的名字,它可由应用程序使用
lclose 关闭指定的文件,请参考CloseHandle函数,了解进一步的情况
lcreat 创建一个文件。如文件已经存在,就会将其缩短成零长度,并将其打开,以便读写
llseek 设置文件中进行读写的当前位置。该函数与vb的seek语句类似。如果用vb的open命令打开了一个文件,那么不要再对这个文件使用llseek函数
LockFile 在windows中,文件可用共享模式打开——在这种情况下,多个进程可同时访问该文件。利用这个函数,要对文件进行读写的一个应用程序可将文件的某一部分锁定起来,使其不能由其他应用程序访问。这样便避免了同时读写时发生的冲突
LockFileEx 与LockFile相似,只是它提供了更多的功能
lopen 以二进制模式打开指定的文件
lread 将文件中的数据读入内存缓冲区
lwrite 将数据从内存缓冲区写入一个文件
MoveFile, MoveFileEx 移动文件。如dwFlags设为零,则MoveFile完全等价于MoveFileEx
OpenFile 这个函数能执行大量不同的文件操作。和这个函数相比,请优先考虑win32的CreateFile函数(它能打开命名管道和控制Unicode文件名,同时不受128个字符的路径名称的限制)
ReadFile 从文件中读出数据。与lread函数相比,这个函数要明显灵活的多。该函数能够操作通信设备、管道、套接字以及邮槽
ReadFileEx 与ReadFile相似,只是它只能用于异步读操作,并包含了一个完整的回调
SearchPath 查找指定文件
SetEndOfFile 针对一个打开的文件,将当前文件位置设为文件末尾
SetFileAttributes 设置文件属性
SetFilePointer 在一个文件中设置当前的读写位置
SetFileTime 设置文件的创建、访问及上次修改时间
UnlockFile 解除对一个文件的锁定
UnlockFileEx 解除对一个文件的锁定
WriteFile 将数据写入一个文件。该函数比lwrite函数要灵活的多。也可将这个函数应用于对通信设备、管道、套接字以及邮槽的处理
WriteFileEx 与WriteFile类似,只是它只能用于异步写操作,并包括了一个完整的回调

  让我们通过几个例子来详细的了解一下其中主要的几个函数及其用法:

1、CreateFile

  作用:这是一个全功能的例程,可打开和创建文件、管道、邮槽、通信服务、设备以及控制台

  声明形式:


Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long


  说明:

  此函数的返回值类型为Long,如执行成功,则返回文件句柄。INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS

  打开一个通信端口时(如COM1),无论如何都要设置成 OPEN_EXISTING。

  这个函数代替了lOpen 和 lCreate函数,应该是我们的首选

  参数说明:


参数 类型及说明
lpFileName String,要打开的文件的名字
dwDesiredAccess Long,如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息
dwShareMode Long,零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问
lpSecurityAttributes SECURITY_ATTRIBUTES,指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)
dwCreationDisposition Long,下述常数之一:
CREATE_NEW 创建文件;如文件存在则会出错
CREATE_ALWAYS 创建文件,会改写前一个文件
OPEN_EXISTING 文件必须已经存在。由设备提出要求
OPEN_ALWAYS 如文件不存在则创建它
TRUNCATE_EXISTING 讲现有文件缩短为零长度
dwFlagsAndAttributes Long,一个或多个下述常数
FILE_ATTRIBUTE_ARCHIVE 标记归档属性
FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式
FILE_ATTRIBUTE_NORMAL 默认属性
FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录
FILE_ATTRIBUTE_READONLY 文件为只读
FILE_ATTRIBUTE_SYSTEM 文件为系统文件
FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作
FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作
FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块
FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化
FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化
FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件
也可在Windows NT下组合使用下述常数标记:
SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION, SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY
hTemplateFile Long,如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性


  示例如下:


long hfile= CreateFile(“c:test.txt”,GENERIC_READ,

FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,

OPEN_EXISTING,FILE_ELAG_OVERLAPPED,NULL)


  2、lcreat

  作用:创建一个文件。如文件已经存在,就会将其缩短成零长度,并将其打开,以便读写

  声明形式:


Declare Function lcreat Lib "kernel32" Alias "_lcreat" (ByVal lpPathName As String, ByVal iAttribute As Long) As Long


  说明:此函数的返回值类型为Long,如执行成功,返回打开文件的句柄。如果出错,则返回HFILE_ERROR

  该函数会打开已由其他应用程序打开的文件,所以使用它时要小心。win32的CreateFile函数已取代了这个函数。这个函数与vb的open语句作用相同

  参数说明:


参数 类型及说明
lpPathName String,欲创建的文件的名字
iAttribute Long,下述值之一:
 0——文件能够读写
 1——创建只读文件
 2——创建隐藏文件
 3——创建系统文件


  例如下面的语句打开c:test.txt文件


lcreat “c:test.txt”,0

3、lopen

  作用:以二进制模式打开指定的文件

  声明形式:

Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long

  说明:此函数的返回值类型为Long,如执行成功,返回打开文件的句柄。HFILE_ERROR表示出错。会设置GetLastError

  CreateFile函数在win32下提供了更多的功能:

  参数说明:

参数 类型及说明
lpPathName String,欲打开文件的名字
iReadWrite Long,访问模式和共享模式常数的一个组合,如下所示:
1、访问模式
READ 打开文件,读取其中的内容
READ_WRITE 打开文件,对其进行读写
WRITE 打开文件,在其中写入内容
2、共享模式(参考OpenFile函数的标志常数表)
OF_SHARE_COMPAT, OF_SHARE_DENY_NONE, OF_SHARE_DENY_READ, OF_SHARE_DENY_WRITE, OF_SHARE_EXCLUSIVE

  4、GetFileTime

  作用:取得指定文件的时间信息

  声明形式:

Declare Function GetFileTime Lib "kernel32" Alias "GetFileTime" (ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long

  说明:Long,非零表示成功,零表示失败。会设置GetLastError

  如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal As Long)。这个函数返回的文件时间采用UTC格式

  参数说明:

参数 类型及说明
hFile Long,文件的句柄
lpCreationTime FILETIME,用于装载文件的创建时间
lpLastAccessTime FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)
lpLastWriteTime FILETIME,用于装载文件上一次修改的时间

  示例代码如下:

‘函数声明

Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As Long, lpCreationTime As FileTime, lpLastAccessTime As FileTime, lpLastWriteTime As FileTime) As Long

Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long

‘定义变量

Dim file As Long
Dim CreationTime As FileTime
Dim lastaccesstime As FileTime
Dim lastaccesstime As FileTime

‘定义结构

Private Type FileTime
 dwLowDateTime As Long
 dwHighDateTime As Long

End Type

Private Sub Form_Load()
 str1 = "c:text.txt"
 file = lopen(str1, READ_WRITE) ‘打开文件
 temp = GetFileTime(file, CreationTime, lastaccesstime, lastwritetime)’得到文件相关信息
 MsgBox CreationTime ‘显示信息

End Sub

  以上代码显示文件的创建时间

  5、CopyFile

  作用:复制文件。与vb的filecopy命令相似

  声明形式:

Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

  说明:Long,非零表示成功,零表示失败。会设置GetLastError

  参数说明:

参数 类型及说明
lpExistingFileName String,源文件名
lpNewFileName String,目标文件名
bFailIfExists Long,如果设为TRUE(非零),那么一旦目标文件已经存在,则函数调用会失败。否则目标文件被改写

  示例代码如下:

‘函数声明

Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Private Sub Form_Load()

 CopyFile "c:test1.txt", "c:test2.txt", 1

End Sub

以上代码将c:test1.txt 拷贝到c:test2.txt

分享到:
评论

相关推荐

    利用Windows API实现文件监控.zip

    本项目"利用Windows API实现文件监控"正是针对这一需求展开的,通过编写VBScript或Visual Basic程序,我们可以调用Windows API来实时监控指定目录下的文件活动。 Windows API(Application Programming Interface)...

    windowsAPI实现基本文件操作

    总之,通过Windows API,开发者能够直接操控文件系统,实现各种复杂和高效的文件操作。`CreateFile`、`ReadFile`和`WriteFile`是这些操作的核心,而`LagreFileCpy`可能是一个实用的示例,展示了如何利用这些API来...

    Windows文件操作API

    总的来说,Windows文件操作API为开发者提供了全面的工具集,以实现对文件系统的各种操作。理解和熟练使用这些API是开发Windows应用程序的基础,特别是那些需要低级别文件访问的程序。在实际编程中,应根据具体需求...

    Windows API 编程_pdf_windowsAPI编程_

    Windows API提供了丰富的文件操作函数,如CreateFile用于打开或创建文件,ReadFile和WriteFile用于读写文件内容,DeleteFile用于删除文件,FindFirstFile和FindNextFile用于查找文件。这些函数使得开发者可以高效地...

    C#winform利用windows api实现U盘管理(检测,容量信息,禁用,开启,复制删除文件,获取pcb信息)

    利用C#中的winform开发的U盘管理小项目,实现对U盘的检测,显示容量信息,禁用、开启U盘,复制删除文件,获取pcb信息,C#对这些操作都有很好的封装,但是本项目是为了体验...这些功能都是通过调用windows api实现的。

    C++ 使用Windows API实现对多级文件路径的压缩和解压

    Windows API(应用程序接口)提供了丰富的功能,包括文件操作、系统调用等,可以用来实现这一目标。本文将深入探讨如何使用Windows API来处理多级文件路径的压缩和解压。 首先,我们要了解Windows API中的核心压缩...

    API实现文件拖放.rar

    "API实现文件拖放"这个主题涉及到了Windows操作系统中的文件操作以及用户界面交互的高级功能。在Windows环境中,文件拖放是一种常见的用户交互方式,允许用户通过鼠标将一个文件从一个位置拖动到另一个位置,以完成...

    GDIplus时钟 采用windows API实现 非MFC

    标题中的"GDIplus时钟 采用windows API实现 非MFC"指的是一个使用Windows API而非Microsoft Foundation Class (MFC)库开发的图形用户界面应用,该应用利用GDI+库来绘制一个实时更新的数字或模拟时钟。GDI+是Windows...

    新编WINDOWS API参考大全

    5. **文件操作**:包括文件的打开、关闭、读写、追加等,如CreateFile、ReadFile、WriteFile等函数。还有目录管理和文件属性的设置。 6. **内存管理**:如VirtualAlloc、VirtualFree、HeapAlloc、HeapFree等函数,...

    VC中应用Windows API函数编写的文件操作小程序

    在这个"VC中应用Windows API函数编写的文件操作小程序"中,我们将深入探讨如何使用API来实现文件的选择、打开以及以超链接形式显示,并学习两种不同的文件写入方法。 首先,让我们了解如何选择文件。Windows API中...

    Windows API 实现截屏

    Windows API提供了丰富的功能,包括文件操作、图形绘制、窗口管理等,其中一个常见且实用的应用场景就是实现屏幕截图并保存到本地。下面将详细介绍如何使用Windows API来实现这一功能。 1. **初始化** 首先,我们...

    Windows API 实现串口控制

    在Windows操作系统中,串口通信是通过Windows API来实现的,这些API提供了一套标准的接口函数,使得开发者能够控制和管理串行端口,实现数据的发送和接收。本文将详细介绍如何使用Windows API进行串口控制。 首先,...

    使用windows api 实现音频采集并同步回放

    以上就是使用Windows API实现音频采集并同步回放的基本步骤和关键知识点。实际开发中,可能还需要结合具体需求进行优化,例如添加音量控制、格式转换等功能。在AudioRecPlay项目中,你可能会找到具体的代码示例和...

    vc++ api函数(Windows API大全)下载

    5. **文件操作**:介绍了文件的打开、关闭、读写操作,文件流的使用,以及文件和目录的创建、删除、重命名等操作。 6. **进程与线程**:深入解析了进程与线程的概念,包括进程间的通信(IPC)、线程同步机制如互斥...

    API实现文件对话框.rar

    通过易语言API实现文件对话框源码,我们可以学习到如何在易语言中进行API调用、结构体操作、错误处理等技巧,这些知识对于开发Windows桌面应用来说是非常基础且实用的。同时,理解API对话框的原理也有助于在其他编程...

    Windows API List_windows_WindowsAPI编程_windowsapilist_

    Windows API List_windows_WindowsAPI编程_windowsapilist_这个主题主要涵盖了Windows API的详细列表和其用法说明,对于进行Windows平台开发的程序员来说,是一份极其重要的参考资料。 Windows API包含了数千个函数...

    Microsoft.WindowsAPICodePack和SHell的DLL

    ShellFolder类则允许我们遍历文件系统,获取文件和子文件夹的详细信息,或者执行文件操作。 3. **使用示例**: - 创建系统托盘图标:通过`NotifyIcon`类,可以创建带有自定义图标和菜单的系统托盘通知区域图标。 ...

    Windows API 大全 个人收藏 新编windows API参考大全

    “WriteFile”函数用于向文件写入数据,这是实现文件操作的关键;而“ConnectSocket”则是网络编程中的重要函数,用于建立客户端与服务器之间的连接。 函数2.CHM和函数.chm这两个文件很可能是包含详细API函数解释的...

    API文件操作模块.rar

    在易语言中,API调用是通过特定的语法结构来实现的,这些API通常来自于Windows操作系统,因为易语言主要是在Windows平台上运行。 API文件操作模块的核心功能可能包括以下几点: 1. 文件创建:API函数如`CreateFile...

    C++纯API实现文件zip压缩的版本管理.zip

    本项目"**C++纯API实现文件zip压缩的版本管理**"旨在探讨如何使用C++编程语言,不依赖第三方库,仅通过系统API来实现对文件的zip压缩和版本控制功能。 首先,我们需要了解C++中的API(应用程序接口)。API是一组...

Global site tag (gtag.js) - Google Analytics