win32 api CreateFile 和 WriteFile 问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win32 api CreateFile 和 WriteFile 问题相关的知识,希望对你有一定的参考价值。
请大哥们帮我写个 win32 api 操作文件的例子,谢谢,注意要测试通过 采纳后将送100分 有 创建,追加,读取 的函数
#include "stdafx.h"#include <windows.h>
int main(int argc, char* argv[])
HANDLE hFile=::CreateFile("test.txt",
GENERIC_ALL,//文件操作方式,读写删都可
0,//此标示无法再创建test.txt文件,必须关闭句柄才可
NULL,//一般高级文件操作用
OPEN_ALWAYS,//有文件就打开,没文件就创建
FILE_ATTRIBUTE_NORMAL,//其它标示将会覆写此标示
NULL);//基本不用,再me/98系统下.必须是null
if(hFile==INVALID_HANDLE_VALUE)
printf("error\\n");
else
const char* cBuffer="hello world";
DWORD dwLenght=strlen(cBuffer);
DWORD dwNumOfWrite;
DWORD dwPos;
dwPos = SetFilePointer(hFile, 0, NULL, FILE_END);//这样可以继续接写文件,而不是复写
WriteFile(hFile,
cBuffer,
dwLenght, //写入字数
&dwNumOfWrite,//实际写入字数
NULL);
::CloseHandle(hFile);
printf("success\\n");
return 0;
注意:我个人不推荐直接操作win api,因为除非你是非常资深技术人员,可以考虑到线程之间的影响以及 兼容性,要不然就不要直接使用api,而是使用c运行库,例如fopen,fwrite等
有错请纠正~~ 参考技术A HANDLE hfile;
hfile=CreateFileA(文件名,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_FLAG_OVERLAPPED,NULL);
DWORD dwWrite=0;
MessageBox(NULL,arr2[1],"提示",MB_OK);
WriteFile(hfile,文件内容sizeof(文件内容),&dwWrite,NULL);
FlushFileBuffers(hfile);
Win10系统CreateFile() Error: 5问题解决
当按下键盘Shitf键,然后点击鼠标右键,打开Powershell窗口后,弹出如下错误:
CreateFile() Error: 5是Win10系统中出现的权限问题,解决该问题需要将注册表中相关权限给关闭掉,具体操作如下:
(1) 按下键盘Win + R组合快捷键,打开后输入命令:regedit, 具体如下图
(2) 然后点击确认,打开注册表: regedit,找到如下选项HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System,修改路径下的键值:EnableLUA,将1改为0即可解决该问题。
以上是关于win32 api CreateFile 和 WriteFile 问题的主要内容,如果未能解决你的问题,请参考以下文章