Win32 API文件读写操作

    LPOVERLAPPED lpOverlapped   

    DWORD nNumberOfBytesToWrite,    

      FILE_FLAG_SEQUENTIAL_SCAN  –提示该文件是逐一访问格局

    LPCTSTR lpFileName, 

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

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

      OPEN_EXISTING  –打开文件,即使文件不设有,则函数调用败北

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

//定义一个句柄变量
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);

  HANDLE CreateFile(

  );

      FILE_FLAG_DELETE_ON_CLOSE 
–提醒当该文件的有着句柄都被关门后,操作系统将登时删除该公文

      FILE_FLAG_WRITE_THROUGH 
–提醒系统不通过缓存而直白将数据写入磁盘

  BOOL ReadFile(

    LPDWORD lpNumberOfBytesWritten,

    DWORD nNumberOfBytesToRead, 

    HANDLE hFile,                   

    dwCreationDisposition:指定怎么样创设文件,包含:

    hTemplateFile:假若打开一个已有文件,则那些参数将被忽略;要使这几个参数有效必须满足:为创设新文件,给该参数传递的文书句柄必须是采用GENERIC_READ格局打开的;

      FILE_ATTRIBUTE_OFFLINE 
–文件的多少已在大体上移动到离线存储设备中,不可能及时利用

      OPEN_ALWAYS 
–要是文件存在,则打开文件;如果文件不设有,则开创一个新文件;

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

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

    LPDWORD lpNumberOfBytesRead,

      FILE_SHARE_DELETE

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

2、文件的写入

 

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

    dwShareMode:指定共享艺术,包括:

    LPSECURITY_ATTRIBUTES lpSecurityAttributes,

3、文件的读取

    HANDLE hFile,               

      FILE_FLAG_RANDOM_ACCESS  –提示该公文是随机访问格局

      FILE_ATTRIBUTE_ARC生殖器疱疹E  –该文件是存档文件

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

      FILE_FLAG_POSIX_SEMANTICS 
–注明将按照POSIX规则访问该公文

    DWORD dwDesiredAccess, 

      FILE_SHARE_READ

    LPVOID lpBuffer,            

    lpBuffer:指向一个缓冲区的指针,该缓冲区将吸收从文件中读取的多寡

      FILE_FLAG_OPEN_REPARSE_POINT 
–指定此标志禁止NTFS再分析点的再分析作为

      FILE_FLAG_NO_BUFFERING 
–提醒系统以不带系统缓冲的章程打开该文件

      FILE_FLAG_BACKUP_SEMANTICS 
–申明是为备份或存储操作而打开或创办该文件的

      0  –指定对象可装备查询访问;

    LPCVOID lpBuffer,               

  );

    lpFileName:指定用于创设或打开的目标的名目;

    DWORD dwShareMode,         

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

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

 

      FILE_ATTRIBUTE_TEMPORARY  –该公文做临时储存使用

例:

      FILE_ATTRIBUTE_READONLY  –该公文为只读文件

      TRUNCATE_EXISTING 
–打开文件,文件打开时被截取使得其大小为0字节,调用该函数必须用GENERIC_WRITE的造访格局来打开文件;若是文件不存在,则函数调用败北;

    dwDesiredAccess:指定对象的拜会方式,包含:

      CREATE_NEW 
–创立一个新文件,假若文件已存在,则函数调用退步;

    lpOverlapped:指向OVERLAPPED结构体的指针,那么些参数若要起效果,须在CreateFile打开文件设置文件属性时添加FILE_FLAG_OVERLAPPED标记,告诉系统须求异步地走访这一个文件,默许处境下是以联合IO的点子访问的

      FILE_ATTRIBUTE_HIDDEN  –该文件是隐蔽文件

  );

    LPOVERLAPPED lpOverlapped       

    DWORD dwFlagsAndAttributes, 

      FILE_FLAG_OPEN_NO_RECALL 
–表明固然请求了该公文的数码,但该多少仍继续封存在长距离存储器中而不应被流传地面存储器

  BOOL WriteFile(

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

    lpOverlapped:指向OVERLAPPED结构体的指针,这些参数若要起效果,须在CreateFile打开文件设置文件属性时添加FILE_FLAG_OVERLAPPED标记,告诉系统需求异步地走访那个文件,默许情状下是以协同IO的点子访问的

      CREATE_ALWAYS 
–创造一个新文件,要是文件已存在,清空该公文现有属性

      FILE_FLAG_OVERLAPPED 
–提醒系统开端化该公文对象,以便那多少个急需较长期才能到位的操作重返ERROR_IO_PENDING标志

1、文件的始建和开拓

      FILE_ATTRIBUTE_NORMAL  –该公文并未任何质量设置

      FILE_SHARE_WRITE

    DWORD dwCreationDisposition, 

    HANDLE hTemplateFile        

    lpSecurityAttributes:指向一个SECURITY_ATTRIBUTES结构的指针,用来规定重临的句柄是不是可以被子进度所继承;

相关文章