Win32 文件封装API Demo
Posted 不会写代码的丝丽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Win32 文件封装API Demo相关的知识,希望对你有一定的参考价值。
CreateFileA function (fileapi.h)文档
SetFilePointer function (fileapi.h)
#include <iostream>
#include <Windows.h>
using namespace std;
int main()
{
HANDLE hFile = ::CreateFile(
//一个文件名称
"testFile",
//打开的文件要做什么操作
//比如可读可写
GENERIC_READ | GENERIC_WRITE,
//可用于多进程同时打开文件时的互斥操作,比如传0其他程序不能打开。
//FILE_SHARE_READ后续打开的文件进程只能读
FILE_SHARE_READ,
//可以指定是否句柄可以被继承,传null不可继承
NULL,
//对于文件不存在的时候相应操作,比如直接覆盖还是直接打开
//CREATE_ALWAYS:不管是否存在都会创建新文件,如果存在旧文件会覆盖,也就是清空旧文件
CREATE_ALWAYS,
//设置文件一些特殊属性,比如这个文件应用程序可以读取但是不能写入或者删除,这个属性会被写入元数据中
FILE_ATTRIBUTE_NORMAL,
//扩展属性可以先忽略
NULL
);
//判断文件是否成功打开
if (hFile == INVALID_HANDLE_VALUE)
{
cout << "失败" << endl;
}
//即将写入的信息
char szText[] = { "22hello world22" };
//成功写入的字节数
DWORD dwBytesToWrite = 0;
//返回值表示是否成写入
BOOL bRet = ::WriteFile(
hFile,//写入的句柄
szText, //写入的字节地址
sizeof(szText),//写入的字节
&dwBytesToWrite,//传出参数
NULL);
if (!bRet)
{
cout << "写入失败" << endl;
}
//刷出数据到文件
FlushFileBuffers(hFile);
//处理文件指针
DWORD newFileIndex = SetFilePointer(hFile,//文件指针
0,//偏移文件指针低32位
NULL,//如果你的文件指针超过32位可以考虑使用这个参数,但是SetFilePointerEx更好用
FILE_BEGIN//从哪个位置开始偏移 比如文件开始 文件结尾 当前位置
);
char szBuff[MAXBYTE] = { 0 };
DWORD dwBytesToRead = 0;
bRet = ::ReadFile(hFile, szBuff, sizeof(szBuff), &dwBytesToRead, NULL);
if (!bRet)
{
cout << "读取失败" << endl;
}
MessageBox(NULL,"", szBuff,MB_OK);
//关闭文件指针
CloseHandle(hFile);
}
以上是关于Win32 文件封装API Demo的主要内容,如果未能解决你的问题,请参考以下文章