当前位置: 首页 > news >正文

WIN--文件读写

创建/打开文件:CreateFile

CreateFile这个API是文件读写的核心下面我们来看看他的使用方式

HANDLE CreateFileA([in]           LPCSTR                lpFileName,[in]           DWORD                 dwDesiredAccess,[in]           DWORD                 dwShareMode,[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,[in]           DWORD                 dwCreationDisposition,[in]           DWORD                 dwFlagsAndAttributes,[in, optional] HANDLE                hTemplateFile
);

第一个参数 如果我们想要创建或者打开的是一个文件那么这里就写文件的路径 如果是其他IO设备就写设备名

第二个参数 是请求对文件或设备的访问权限 可以为GENERIC_READ(只读),GENERIC_WRITE(只写)或者GENERIC_ALL(可读可写)

第三个参数 请求的文件或设备的共享模式(其他进程对该文件权限)我们通常写为FILE_SHARE_READ(其他进程可读)

第四个参数 我们通常写为NULL

*第五个参数(重点) 对存在或不存在的文件或设备执行的操作  下面为这个参数的不同情况

CREATE_ALWAYS

2

始终创建新文件。

如果指定的文件存在且可写,则函数将截断文件、函数成功,最后错误代码设置为 ERROR_ALREADY_EXISTS(183)。

如果指定的文件不存在且路径有效,则会创建一个新文件,该函数会成功,最后一个错误代码设置为零。

有关详细信息,请参阅本主题的“备注”部分。

CREATE_NEW

1

仅当该文件尚不存在时,才会创建一个新文件。

如果指定的文件存在,函数将失败,最后一个错误代码设置为 ERROR_FILE_EXISTS(80)。

如果指定的文件不存在,并且是可写位置的有效路径,则会创建一个新文件。

OPEN_ALWAYS

4

始终打开文件。

如果指定文件存在,则函数成功,最后一个错误代码设置为 ERROR_ALREADY_EXISTS(183)。

如果指定的文件不存在并且是可写位置的有效路径,该函数将创建一个文件,最后一个错误代码设置为零。

OPEN_EXISTING

3

仅当文件或设备存在时才打开该文件或设备。

如果指定的文件或设备不存在,该函数将失败,最后一个错误代码设置为 ERROR_FILE_NOT_FOUND(2)。

有关设备的详细信息,请参阅“备注”部分。

TRUNCATE_EXISTING

5

打开一个文件并截断它,使其大小为零字节,仅当它存在时。

如果指定的文件不存在,该函数将失败,最后一个错误代码设置为 ERROR_FILE_NOT_FOUND(2)。

调用过程必须打开文件,并将 GENERIC_WRITE 位设置为 dwDesiredAccess 参数的一部分。

第六个参数 我们通常写为FILE_ATTRIBUTE_NORMAL即可

第七个参数 通常写为NULL

注意:如果CreatFile这个函数调用失败返回值为INVALID_HANDLE_VALUE 成功为当前操作的文件或者IO设备的句柄  打开了记得要关闭

总结:CreateFile这个API可以打开一个文件或IO设备也可以创建一个文件或者IO设备 具体的操作由参数来决定

//创建一个文件HANDLE hFile = CreateFileA("C:\\Users\\20622\\Desktop\\zhao.txt",GENERIC_ALL,                //给予文件的权限FILE_SHARE_READ,            //其他进程可对该文件进行的操作NULL,CREATE_ALWAYS,              //打开方式FILE_ATTRIBUTE_NORMAL,      //通常就为FILE_ATTRIBUTE_NORMALNULL);if (hFile == INVALID_HANDLE_VALUE){cout << GetLastError();return 0;}CloseHandle(hFile);

向文件中写入WriteFile

char buffer[] = "FUCK YOU \r\n HA HA HA HA";
WriteFile(hFile, buffer, sizeof(buffer), NULL, NULL);

从文件中读取

注意读取的时候我们要修改一下CreateFile的参数CREATE_ALWAYS改为OPEN_EXISTING

我们在获取文件的大小的时候要调用API:GetFileSize--第一个参数为你要获取文件的句柄第二个参数填NULL即可

DWORD dwFileSize = GetFileSize(hFile, NULL);
PCHAR FileBuffer = new char[dwFileSize];
memset(FileBuffer, 0, dwFileSize);
ReadFile(hFile, FileBuffer, dwFileSize, NULL, NULL);

相关文章:

  • Python函数异常处理底层实现原理
  • OpenLayers 加载ArcGIS瓦片数据
  • Spring AI系列之Spring AI 集成 ChromaDB 向量数据库
  • CVE-2024-36467 Zabbix权限提升
  • 新质生产力引擎:营销枢纽智能体贯通全链路,AI赋能企业数字化运营高效升级!
  • 关于(stream)流
  • Few-shot Personalized Scanpath Prediction
  • Windows中安装Neo4j图数据库的配置
  • Python基础语法(十四):Python常用内置模块及功能
  • C++基础算法————递推
  • 编写一个算法frequency,统计在一个输入字符串中各个不同字符出现的频度。用适当的测试数据来验证这个算法
  • 记一个小问题:Cookie 作用域规则
  • STM32CubeMX配置使用通用定时器产生PWM
  • 洛谷——P3372 【模板】线段树 1
  • 110 kV覆冰绝缘子电场分布特性有限元分析报告
  • 运行打印Hello World启动了多少线程?
  • 性能测试之全链路压测及实施策略
  • 每日算法刷题Day16 5.26:leetcode不定长滑动窗口求子数组个数越短越合法2道题+恰好型3道题,用时1h20min
  • MySQL : MySQL的安装【CentOS 7】
  • CRC多项式说明表
  • 医院网站建设 费用/长尾关键词在线查询
  • 衡阳网站建设公司/南京百度推广优化
  • 在相亲网站做红娘/如何建网站不花钱
  • 建设充值网站多钱/西安百度框架户
  • 做网站设计的公司排名/百度号码查询平台
  • 网站访客qq统计 原理/短视频营销策略