Win32 API文件读写操作

1、文件的创建和打开

  HANDLE CreateFile(

    LPCTSTR lpFileName,

    DWORD dwDesiredAccess,

    DWORD dwShareMode,

    LPSECURITY_ATTRIBUTES lpSecurityAttributes,

    DWORD dwCreationDisposition,

    DWORD dwFlagsAndAttributes,

    HANDLE hTemplateFile

  );

    lpFileName:指定用于创建或打开的对象的名称;

    dwDesiredAccess:指定对象的访问方式,包括:

      0  --指定对象可设备查询访问;

      GENERIC_READ  --指定对象可读访问,可从文件中读取数据,并可移动文件中的指针;

      GENERIC_WRITE  --指定对象可写访问,可向文件中写入数据,并可移动文件中的指针;

    dwShareMode:指定共享方式,包括:

      FILE_SHARE_DELETE

      FILE_SHARE_READ

      FILE_SHARE_WRITE

    lpSecurityAttributes:指向一个SECURITY_ATTRIBUTES结构的指针,用来确定返回的句柄是否能够被子进程所继承;

    dwCreationDisposition:指定如何创建文件,包括:

      CREATE_NEW  --创建一个新文件,如果文件已存在,则函数调用失败;

      CREATE_ALWAYS  --创建一个新文件,如果文件已存在,清空该文件现有属性

      OPEN_EXISTING  --打开文件,如果文件不存在,则函数调用失败

      OPEN_ALWAYS  --如果文件存在,则打开文件;如果文件不存在,则创建一个新文件;

      TRUNCATE_EXISTING  --打开文件,文件打开时被截取使得其大小为0字节,调用该函数必须用GENERIC_WRITE的访问方式来打开文件;如果文件不存在,则函数调用失败;

    dwFlagsAndAttributes:设置文件属性和标志,包括:

      FILE_ATTRIBUTE_ARCHIVE  --该文件是存档文件

      FILE_ATTRIBUTE_HIDDEN  --该文件是隐藏文件

      FILE_ATTRIBUTE_NORMAL  --该文件没有其他属性设置

      FILE_ATTRIBUTE_OFFLINE  --文件的数据已在物理上移动到离线存储设备中,不能立即使用

      FILE_ATTRIBUTE_READONLY  --该文件为只读文件

      FILE_ATTRIBUTE_SYSTEM  --该文件是操作系统文件

      FILE_ATTRIBUTE_TEMPORARY  --该文件做暂时存储使用

      FILE_FLAG_WRITE_THROUGH  --指示系统不经过缓存而直接将数据写入磁盘

      FILE_FLAG_OVERLAPPED  --指示系统初始化该文件对象,以便那些需要较长时间才能完成的操作返回ERROR_IO_PENDING标志

      FILE_FLAG_NO_BUFFERING  --指示系统以不带系统缓冲的方式打开该文件

      FILE_FLAG_RANDOM_ACCESS  --指示该文件是随机访问方式

      FILE_FLAG_SEQUENTIAL_SCAN  --指示该文件是顺序访问方式

      FILE_FLAG_DELETE_ON_CLOSE  --指示当该文件的所有句柄都被关闭后,操作系统将立即删除该文件

      FILE_FLAG_BACKUP_SEMANTICS  --表明是为备份或存储操作而打开或创建该文件的

      FILE_FLAG_POSIX_SEMANTICS  --表明将根据POSIX规则访问该文件

      FILE_FLAG_OPEN_REPARSE_POINT  --指定此标志禁止NTFS再分析点的再分析行为

      FILE_FLAG_OPEN_NO_RECALL  --表明虽然请求了该文件的数据,但该数据仍继续保存在远程存储器中而不应被传回本地存储器

    hTemplateFile:如果打开一个已有文件,则这个参数将被忽略;要使这个参数有效必须满足:为创建新文件,给该参数传递的文件句柄必须是使用GENERIC_READ方式打开的;

2、文件的写入

  BOOL WriteFile(

    HANDLE hFile,

    LPCVOID lpBuffer,

    DWORD nNumberOfBytesToWrite,

    LPDWORD lpNumberOfBytesWritten,

    LPOVERLAPPED lpOverlapped

  );

    hFile:指定要写入数据的文件的句柄

    lpBuffer:指向包含将要写入文件的数据的缓冲区的指针

    nNumberOfBytesToWrite:指明要向文件中写入的字节数

    lpNumberOfBytesWritten:用来接收实际写入到文件中的字节数

    lpOverlapped:指向OVERLAPPED结构体的指针,这个参数若要起作用,须在CreateFile打开文件设置文件属性时添加FILE_FLAG_OVERLAPPED标记,告诉系统需要异步地访问这个文件,默认情况下是以同步IO的方式访问的

3、文件的读取

  BOOL ReadFile(

    HANDLE hFile,

    LPVOID lpBuffer,

    DWORD nNumberOfBytesToRead,

    LPDWORD lpNumberOfBytesRead,

    LPOVERLAPPED lpOverlapped

  );

    hFile:指定要读取其数据的文件的句柄

    lpBuffer:指向一个缓冲区的指针,该缓冲区将接收从文件中读取的数据

    nNumberOfBytesToRead:指定从文件读取的字节数

    lpNumberOfBytesRead:用来接收实际读到的字节数

    lpOverlapped:指向OVERLAPPED结构体的指针,这个参数若要起作用,须在CreateFile打开文件设置文件属性时添加FILE_FLAG_OVERLAPPED标记,告诉系统需要异步地访问这个文件,默认情况下是以同步IO的方式访问的

例:

//定义一个句柄变量
HANDLE hFile;
//创建文件
hFile = CreateFile("1.txt", GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);
//接收实际写入的字节数
DWORD dwWrites;
//写入数据
WriteFile(hFile, "hello world!", strlen("hello world!"), &dwWrites, NULL);
//关闭文件句柄
CloseHandle(hFile);
HANDLE hFile;
//打开文件
hFile = CreateFile("1.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
//接收实际读取到的数据
char ch[100];
//接收实际读取到的字节数
DWORD dwReads;
//读取数据
ReadFile(hFile, ch, 100, &dwReads, NULL);
//设置字符串结束字符
ch[dwReads] = 0;
//关闭打开的文件对象的句柄
CloseHandle(hFile);
//显示读取到的数据
MessageBox(ch);
时间: 2024-10-26 01:27:43

Win32 API文件读写操作的相关文章

java文件读写操作类

借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内容进行捕获,放在txt文本文档中 2,对各种类型数据都以字符串的形式逐行写入 3,对全局数组的内容进行写入 读操作: 获取文件行数 对逐行字符串型数据进行类型转换,放入二维数组中 为后面算法处理提供入口,但是要小心的是:不可以将行数用全局变量做计数器,否则每次读入是全局变量累加出错,应重新开始读取

php学习基础-文件系统(二) 文件读写操作、文件资源处理

一.文件的打开与关闭 /* *读取文件中的内容 * file_get_contents(); //php5以上 * file() * readfile(); * * 不足:全部读取, 不能读取部分,也不能指定的区域 * * fopen() * fread() * fgetc() * fgets() * * * * * 写入文件 * file_put_contents("URL", "内容字符串"); //php5以上 * 如果文件不存在,则创建,并写入内容 * 如果

Python常用的文件读写操作和字符串操作

文件读写操作 fileUtils.py # -*- coding: utf-8 -*- import os def getFileList(dir, fileList=[]):     """     遍历一个目录,输出所有文件名     param dir: 待遍历的文件夹     param filrList : 保存文件名的列表     return fileList: 文件名列表     """     newDir = dir     

Android数据存储——文件读写操作(File)

Android文件读写操作 一.文件的基本操作 Android中可以在设备本身的存储设备或外接的存储设备中创建用于保存数据的文件.在默认状态下,文件是不能在不同程序间共享的. 当用户卸载您的应用程序时,这些文件删除. 文件存储数据可以通过openFileOutput方法打开一个文件(如果这个)文件不存在就自动创建这个文件),通过load方法来获取文件中的 数据,通过deleteFile方法删除一个指定的文件. 1,常用方法介绍: File是通过FileInputStream和FileOutput

python进阶--文件读写操作

Python读写文件 1. open 使用open打开文件后一定要记得调用 文件对象的close()方法.比如可以用try --finally语句来确保最后能关闭文件. >>>f1 = open('thisfile.txt') >>>try: f1.read() finally: f1.close() 2. 读文件(read,readline,readlines) ①读文本文件 input = open('data','r') input.read() ②读二进制文件

C文件读写操作

C语言的文件 一.文件基本操作:        在c语言中,对数据文件的操作都是依靠文件类型指针来完成. 1.文件类型指针的定义方式:FILE *文件类型变量 2.调用fopen函数打开文件的方法: 文件类型指针变量=fopen(文件名,使用文件打开方式): 文件打开方式(12种) 文件打开方式 意义 rt 只读打开一个文本文件,只允许读数据 wt 只写打开或建立一个文本文件,只允许写数据 at 追加打开一个文本文件,并在文件末尾写数据 rb 只读打开一个二进制文件,只允许读数据 wb 只写打开

C语言文件读写操作,从文件读取数据

很早写的在linux系统下的文件读写操作,从文件中读取数据 #include <stdio.h> int ReadInfoFromFile(const char *strFile) { FILE *fp; char ch; fp = fopen(strFile, "r"); // 只读的方式打开文件 if(fp==NULL) { perror("fopen"); // 打开文件失败 打印错误信息 return -1; } ch = fgetc(fp);

【python学习笔记】pthon3.x中的文件读写操作

在学习python文件读写的时候,因为教程是针对python2的,而使用的是python3.想要利用file类时,类库里找不到,重装了python2还是使不了.在别人园子认真拜读了<详解python2和python3区别>(已收藏)之后,才发现python3已经去掉file类. 现在利用python进行文件读写的方法更加类似于C语言的文件读写操作. 如今总结如下: 一 打开文件—— f = open('poem.txt','x+'): 读过open的帮助文档,然后自己翻译了一下,现给大家分享一

python(三)一个文件读写操作的小程序

我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1.txt xiaoBing_1.txt xiaoNa_2.txt xiaoBing_2.txt 这样格式的四个文件 下面上代码: #定义一个保存文件的函数 def save_file(xiaoNa,xiaoBing,count): file_name_xiaoBing = 'xiaoBing_'+str(cou