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的主要内容,如果未能解决你的问题,请参考以下文章

win32API多线程编程

C#通过WIN32 API实现嵌入程序窗体

c语言 win32api 创建一个按钮,点击按钮后,按钮消失?

.net API 与win32API

如何在win32 api中将鼠标坐标写入文本文件?

c # 初学者 win32 API转型者,c# 的winform的消息机制是啥?以及它的主线,为啥没有消息循环??