win32(7)--文件操作

本文详细介绍了Windows API中的文件操作,包括CreateFile、ReadFile、WriteFile、GetFileSize、SetFilePointer等函数的使用,以及文件复制、删除、移动的相关函数,还有文件属性的获取与设置,文件夹操作和文件查找等功能。
摘要由CSDN通过智能技术生成

一、创建/打开文件、读文件、写文件及文件大小获取和文件偏移:CreateFile、ReadFile、WriteFile、GetFileSize、SetFilePointer。

CreateFile:创建/打开文件

HANDLE WINAPI CreateFile( //返回值是句柄,错误返回INVALID_HANDLE_VALUE(-1)

_In_ LPCWSTR lpFileName, //文件名

_In_ DWORD dwDesiredAccess,//访问文件想要获取的权限,多权限用“|”相连:GENERIC_READ(读权限)、GENERIC_WRITE(写的权限)、GENERIC_EXECUTE(执行权限)、GENERIC_ALL(所有)

_In_ DWORD dwShareMode,//共享模式,0(不共享),FILE_SHARE_READ(共享读)、FILE_SHARE_WRITE(共享写)

_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,//安全属性,默认NULL

_In_ DWORD dwCreationDisposition,//文件不存在的时候的创建选项,见下面

_In_ DWORD dwFlagsAndAttributes,//文件的属性,FILE_ATTRIBUTE_NORMAL(默认属性)、

FILE_ATTRIBUTE_READONLY(只读文件)、FILE_ATTRIBUTE_HIDDEN(隐藏文件)等等。

_In_opt_ HANDLE hTemplateFile //NULL

);

参数:dwCreationDisposition文件不存在的时候的创建选项,类似fopen的r w 等。

  • CREATE_ALWAYS:总是创建,不存在则创建,存在则覆盖,原文件内容丢失;
  • OPEN_EXISTING:文件一定要存在,否则失败
  • CREATE_NEW:不存在则创建,存在则不创建并返回失败
  • OPEN_ALWAYS:如果存在则打开文件,不存在则创建文件
  • TRUNCATE_EXISTING:如果存在则打开文件并清空文件内容,至少要求GENERIC_WRITE权限,不存在则返回失败;

 

ReadFile:读文件(从当前文件位置开始读取)

BOOL WINAPI ReadFile( //返回0失败,非0成功,若实际读取字节数=0也是没读到内容

_In_ HANDLE hFile, //文件的句柄

_Out_writes_bytes_to_opt_(nNumberOfBytesToRead, *lpNumberOfBytesRead) __out_data_source(FILE) LPVOID lpBuffer,//数据缓冲区

_In_ DWORD nNumberOfBytesToRead, //预计的读取字节数

_Out_opt_ LPDWORD lpNumberOfBytesRead, //实际的读取字节数,是指针

_Inout_opt_ LPOVERLAPPED lpOverlapped); //设置为NULL

 

WriteFile:写文件(从当前的文件位置开始写)

BOOL WINAPI WriteFile(//返回0失败,非0成功

_In_ HANDLE hFile, //文件句柄

_In_reads_bytes_opt_(nNumberOfBytesToWrite) LPCVOID lpBuffer,//数据缓冲区

_In_ DWORD nNumberOfBytesToWrite,//预计写入的字节数

_Out_opt_ LPDWORD lpNumberOfBytesWritten,//实际写入字节数,指针

_Inout_opt_ LPOVERLAPPED lpOverlapped);//设置为NULL

 

GetFileSize:获取文件大小

DWORD WINAPI GetFileSize( //返回值,文件大小的低32位

_In_ HANDLE hFile, //文件句柄

_Out_opt_ LPDWORD lpFileSizeHigh);//文件大小的高32位,指针

 

SetFilePointer:设置文件的当前位置指针

DWORD WINAPI SetFilePointer(

_In_ HANDLE hFile, //文件句柄

_In_ LONG lDistanceToMove, //需要位移的值,long类型

_Inout_opt_ PLONG lpDistanceToMoveHigh, //当前文件位置的高32位

_In_ DWOR

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值