2024年3月30日发(作者:)

文件操作

应用程序中很多时候需要创建、打开不同格式的文件,存储或者读取不同格

式的数据信息。

分别介绍两种方式的文件操作所需的函数:

——————————————————————————————————

一 使用Windows CE提供的API函数

1> 创建/打开文件

HANDLE CreateFile(

LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDisposition,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile

);

参数含义:

lpFileName:创建/打开文件的文件名,需要包括其完整路径。

dwDesiredAccess:指定文件的访问权限,如可读,可写。(详见表1)

GENERIC_READ 可读

GENERIC_WRITE 可写

GENERIC_WRITE | GENERIC_READ 可读可写

0 不可读不可写,只能获取文件属性

表1

dwShareMode:在本进程创建或者打开一个文件后(未关闭之前),其他进程

是否还可以具有访问该文件的权限,由此参数设定。(详见表2)

FILE_SHARE_WRITE 其他进程打开文件时的访问权限为只

写时,成功

FILE_SHARE_READ 其他进程打开文件时的访问权限为只

读时,成功

0 在该文件的句柄被关闭之前,不能够被

共享,也不能够被打开

表2

lpSecurityAttributes:指定文件访问的安全属性,Windows CE下不支持该参

数,因此设置为NULL。

dwCreationDisposition:指定创建/打开文件的方式。(详见表3)

1

GREATE_NEW 创建一个新文件,如果文件已经存在,

则函数执行失败

GREATE_ALWAYS 创建一个文件,如果文件已经存在,则

覆盖此文件,并清空已经存在的属性

OPEN_EXISTING 打开一个已经存在的文件,如果文件不

存在,则函数执行失败

OPEN_ALWAYS 打开一个已经存在的文件,如果文件不

存在,则创建一个新文件

TRUNCATE_EXISTING 打开一个已经存在的文件,并将其截断

到0字节,如果文件不存在,则函数执

行失败

表3

注:该参数设置为TRUNCATE_EXISTING,有一个必要的条件:dwDesiredAccess

参数必须设置为GENERIC_WRITE。

dwFlagsAndAttributes:指定文件属性。(详见表4)

FILE_ATTRIBUTE_ARCHIVE

FILE_ATTRIBUTE_HIDDEN

FILE_ATTRIBUTE_NORMAL

FILE_ATTRIBUTE_READONLY

FILE_ATTRIBUTE_SYSTEM

存档

隐藏

默认属性

只读

系统属性,表明该文件对系统操作很重要

表4

hTemplateFile:Windows CE中不支持,设为0。

返回值:成功,返回文件句柄,失败则返回INVALID_HANDLE_VALUE。

如果调用失败,通过GetLastError函数查看失败原因。

2> 关闭文件

BOOL CloseHandle(

HANDLE hObject

);

参数含义:

hObject:文件的句柄,CreateFile函数的返回值。

返回值:成功,返回非零值;失败,返回零值。

3> 读取文件

BOOL ReadFile(

HANDLE hFile,

LPVOID lpBuffer,

DWORD nNumberOfBytesToRead,

2