问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言createfile函数用法

发布网友 发布时间:2022-04-29 10:15

我来回答

4个回答

热心网友 时间:2022-06-26 01:22

1、CreateFile 是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道。


2、例程:

#include <windows.h>
int main()
{
    HANDLE hf = CreateFile(TEXT("C:\\testa.bin"), GENERIC_WRITE, 0,
        0, CREATE_ALWAYS, 0, 0);
    DWORD written;
    WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0);
    CloseHandle(hf);
    hf = CreateFile(TEXT("c:\\testb.bin"), GENERIC_WRITE, 0,
        0, OPEN_ALWAYS, 0, 0);
    SetFilePointer(hf, 0, 0, FILE_END);
    WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0);
    CloseHandle(hf);
    return 0;
}

热心网友 时间:2022-06-26 01:23

CreateFile用法和例子

函数原型: 

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

参数列表

lpFileName String 要打开的文件的名字

dwDesiredAccess Long 如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息

dwShareMode Long, 零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问

lpSecurityAttributes SECURITY_ATTRIBUTES, 指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)

dwCreationDisposition Long,下述常数之一:

CREATE_NEW 创建文件;如文件存在则会出错

CREATE_ALWAYS 创建文件,会改写前一个文件

OPEN_EXISTING 文件必须已经存在。由设备提出要求

OPEN_ALWAYS 如文件不存在则创建它

TRUNCATE_EXISTING 讲现有文件缩短为零长度

dwFlagsAndAttributes Long, 一个或多个下述常数

FILE_ATTRIBUTE_ARCHIVE 标记归档属性

FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式

FILE_ATTRIBUTE_NORMAL 默认属性

FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录

FILE_ATTRIBUTE_READONLY 文件为只读

FILE_ATTRIBUTE_SYSTEM 文件为系统文件

FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作

FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作

FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块

FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化

FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化

FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件

也可在Windows NT下组合使用下述常数标记:

  SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION, SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY

hTemplateFile Long, 如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性

返回值

如执行成功,则返回文件句柄。

INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS

(以上摘自百度百科)

实例:

1、直接在函数内指定文件地址:

void playCEwav()
{
CHAR *pBuffer;
DWORD RSize;
int fileSize = 0;
int i;
HANDLE hOpenFile = (HANDLE)CreateFile(L"E:\\a.text", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
if (hOpenFile == INVALID_HANDLE_VALUE)
{
hOpenFile = NULL;
MessageBoxA(NULL, "Can not open the file", "Playwav", MB_OK);
}
fileSize = GetFileSize(hOpenFile, NULL);
pBuffer = (CHAR *) malloc(fileSize);
ReadFile(hOpenFile, pBuffer, fileSize, &RSize, NULL);

void playwav(TCHAR * path)
{
CHAR *pBuffer;
DWORD RSize;
int fileSize = 0;
int i;
TCHAR szPath[100];
memset(szPath, 0, sizeof(szPath));
_tcscpy(szPath, path);
HANDLE hOpenFile = (HANDLE)CreateFile(szPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);
if (hOpenFile == INVALID_HANDLE_VALUE)
{
hOpenFile = NULL;
MessageBoxA(NULL, "Can not open the file", "Playwav", MB_OK);
}
fileSize = GetFileSize(hOpenFile, NULL);
pBuffer = (CHAR *) malloc(fileSize);
ReadFile(hOpenFile, pBuffer, fileSize, &RSize, NULL);
free(pBuffer);
}

热心网友 时间:2022-06-26 01:23

#include <windows.h>

int main()
{
    HANDLE hf = CreateFile(TEXT("C:\\testa.bin"), GENERIC_WRITE, 0,
        0, CREATE_ALWAYS, 0, 0);
    DWORD written;
    WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0);
    CloseHandle(hf);
    hf = CreateFile(TEXT("c:\\testb.bin"), GENERIC_WRITE, 0,
        0, OPEN_ALWAYS, 0, 0);
    SetFilePointer(hf, 0, 0, FILE_END);
    WriteFile(hf, "\x0f\xff\xff\xff\xff\xff", 6, &written, 0);
    CloseHandle(hf);
    return 0;
}

热心网友 时间:2022-06-26 01:24

我觉得真的不行
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
多少分能被泉州华光职业学院录取 宁夏大学的二学位有哪些呢? 小孩睡的卧室有什么禁忌 起诉女方不回家能离婚吗 鹅肉鸭肉哪个贵 孩子9岁,视力0.3,可采取哪些措施? 《神幻拍档》中那只人鱼叫什么名字?(最好详细点!) 江苏恩泰照明集团有限公司怎么样 win7便签怎么找到 哪个牌子的折刀最好 c语言关于file C语言中FILE定义的数组有什么用?怎么用? 印尼的英语简称是不是ID C语言中的FILE的用法!谢谢了,大神帮忙啊 C语言中的FILE的用法! indo是印度尼西亚的英文缩写?还是印度的缩写? 印度尼西亚简称什么? 在苹果电脑系统中钉钉软件怎么拍照上传? 如何让Premiere pro正确显示中文字体 钉钉打卡拍照,能同步到电脑上吗 关于在家灌肠,懂的人来 水煮灌肠的家常做法大全 曲屏手机屏幕容易坏吗 华为手机清除数据之后帐号和密码忘记了怎么办? vivo手机双清了账户密码忘记了怎么办,手机号也换了 vivo手机双清清除所有数据之后需要账户密码但密码忘了手机号码早没用了怎么办 格式合同的特点有哪些,长期的,反复的,可修改的,不断使用的? 手机已经双清了不知道账号密码怎么办? 手机自动关机开机后变成出厂设置了号码都没了怎么办? 什么是格式合同 印度尼西亚中英文简介 C语言中定义的__FILE__使用,如何只出现该文件名,而不显示路径 C语言 关于file的问题 印度尼西亚的国家代码是什么 c语言中“文件”是什么?怎么用? file C语言 计算机3级上机 印度尼西亚国家代码是什么 VC++6.0环境下,C语言里FILE的使用 用英语写出亚洲所有国家的名称? 利用c语言编写 读出一文件名为file的内容并显示 c语言关于文件的使用? C语言中怎么定义一个FILE文件变量其他函数也能使用 c语言FILE问题 拉肚子吃南瓜小米粥会加重拉肚子吗 喝凉的南瓜汤和胡椒粉会引起拉肚子 南瓜汤放虾皮会拉肚子吗 性传染疾病有哪些 什么是性传播疾病,有哪几种? 性传染病有哪些 性传染病都有那些