几个文件指针操作的函数

NO1、CreateFile    //打开或创建文件或者I/O设备,并返回可访问的句柄

HANDLE WINAPI CreateFile(
   HANDLE CreateFile(LPCTSTR lpFileName, //普通文件名或者设备文件名
    DWORD dwDesiredAccess, //访问模式(写GENERIC_READ /读GENERIC_WRITE)
    DWORD dwShareMode, //共享模式
    LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针
    DWORD dwCreationDisposition, //如何创建
    DWORD dwFlagsAndAttributes, //文件属性
    HANDLE hTemplateFile //用于复制文件句柄
);


参数说明:太多了,复制粘贴都不想 可以去网上查一下。
返回值:失败返回INVALID_HANDLE_VALUE,成功返回一个内核对象句柄

NO2、SetFilePointer    //移动一个打开文件的指针

DWORD SetFilePointer(

    HANDLE hFile, // 文件句柄

    LONG lDistanceToMove, // 偏移量(低位)

    PLONG lpDistanceToMoveHigh, // 偏移量(高位)

    DWORD dwMoveMethod // 基准位置FILE_BEGIN:文件开始位置 FILE_CURRENT:文件当前位置 FILE_END:                
                       //文件结束位置

说明:移动一个打开文件的指针
返回值:返回一个新位置,从文件起始处开始算起的一个字节偏移量。

NO3、SetEndOfFile    //将当前文件指针位置设置为文件尾

BOOL WINAPI SetEndOfFile(HANDLE hFile);

说明:将当前位置设置为文件尾
返回值:非零表示成功,0表示失败。

NO4、DuplicateHandle    //拷贝另一个文件句柄的收获可以用到

BOOL WINAPI DuplicateHandle(
    __in HANDLE hSourceProcessHandle,
    __in HANDLE hSourceHandle,
    __in HANDLE hTargetProcessHandle,
    __out LPHANDLE lpTargetHandle,
    __in DWORD dwDesiredAccess,
    __in BOOL bInheritHandle,
    __in DWORD dwOptions
);

参数 类型及说明
hSourceProcessHandle:源进程内核句柄(即负责传递内核对象句柄的进程句柄,可以利用    
                      GetCurrentProcess获得当前进程的伪句柄)
hSourceHandle:要传递的内核对象句柄
hTargetProcessHandle:目标进程内核句柄
lpTargetHandle:接收内核对象句柄的地址(先随便声明一个HANDLE)
dwDesiredAccess:TargetHandle句柄使用何种访问掩码(这个掩码是在句柄表中的一项)
bInheritHandle:是否拥有继承
dwOptions:当设DUPLICATE_SAME_ACCESS时,表示于源的内核对象所有标志一样,此时wDesiredAccess可标志
           为0

返回值:非零成功,0表示失败

NO5、FlushFileBuffers    //刷新内部文件缓冲区

BOOL WINAPI FlushFileBuffers(
    __in     HANDLE hFile;    //文件句柄
)


说明:刷新文件缓冲区
返回值:非零成功,0失败

NO6、GetFileSize    //获取文件长度

DWORD WINAPI GetFileSize(
    __in  HANDLE hFile,
    __out LPDWORD lpFileSizeHigh
);

参数说明:
hFile:文件的句柄。
lpFileSizeHigh:指定一个长整数,用于装载一个64位文件长度的头32位。如这个长度没有超过2^32个字节,则
                该参数可以设为NULL(变成ByVal)。

返回值:如果函数调用成功,则返回值为文件大小的低位双字,lpFileSizeHigh返回文件大小的高阶双字。
       如果函数返回值为INVALID_FILE_SIZE,并且GetLastError函数返回值非NO_ERROR,则函数调用失败。

功能:获得文件大小
示例代码:
DWORD fileSizeHigh;
DWORD fileSizeLow = GetFileSize(hFile,&fileSizeHigh);
UNIT64 fileSize = (((UINT64)fileSizeHiegh) << 32 ) | fileSizeLow;

NO7、GetFileType    //获得文件类型

DWORD WINAPI GetFileType(
    __in     HANDLE hFile;    //文件句柄
)

说明:判断文件类型
返回值:下述常数之一:
                    FILE_TYPE_UNKNOWN 文件类型未知
                    FILE_TYPE_DISK 属于磁盘文件
                    FILE_TYPE_CHAR 文件是一个控制台或打印机
                    FILE_TYPE_PIPE 文件是个管道

NO8、LockFile和UnLockFile    //锁定,解锁文件区域,防止访问冲突

BOLL WINAPI LockFile(
__in hFile,    //欲锁定文件的句柄
__in dwFileOffsetLow,    //指定欲锁定区域起始处的低32位地址
__in dwFileOffsetHigh,    //指定欲锁定区域起始处的高32位地址
__in nNumberOfBytesToLockLow,    //锁定区域包含字符数量的低32位值
__in nNumberOfBytesToLockHigh,    //锁定区域包含字符数量的高32位值
)

BOLL WINAPI UnLockFile(
__in hFile,    //欲解锁文件的句柄
__in dwFileOffsetLow,    //指定欲解锁区域起始处的低32位地址
__in dwFileOffsetHigh,    //指定欲解锁区域起始处的高32位地址
__in nNumberOfBytesToUnLockLow,    //锁定区域包含字符数量的低32位值
__in nNumberOfBytesToUnLockHigh,    //锁定区域包含字符数量的高32位值
)

说明:如果文件是以共享模式打开,多个进程都可以访问该文件,会出现访问冲突,利用LockFile和UNLockFile
    可以解决。
返回值:成功返回非零,失败返回0

NO9、CFileException     //这是一个文件相关异常的类

说明:(百度百科复制的)

个CFileException对象代表了与文件相关的异常。CFileException类包括有可移植的原因代码和操作系统指定错误值等公共数据成员。此类也提供产生文件异常的静态成员函数,返回操作系统和C运行中的错误原因代码。

CFileException对象在CFile成员函数中被创建和产生,也可在派生类成员函数中创建或产生。可在CATCH表达式范围内访问这些对象。因为可移植,可以仅用出错代码获取异常的原因。

成员:

m_cause包含异常原因相对应的可移植代码

m_IosError包含相关操作系统错误代码

m_strFileName包含异常的文件名

代码专函:

OsErrorToException返回与操作系统错误值相对应的出错原因代码

ErrnoToException返回与运行错误值相对应的出错原因代码

帮助函数:

ThrowOsError返回一个基于操作系统错误值相对应的出错原因代码

CFileException::ThrowOsError(::GetLastError());  //可以对GetLastError返回的值进行类型转换

ThrowErrno产生一个基于运行错误值的文件异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值