OpenFile函数创建,打开,重新打开或删除文件。
此函数用于与16位版本的Windows兼容。特别地,OpenFile函数无法打开命名管道。基于Win32的应用程序应使用CreateFile功能。
HFILE OpenFile(
LPCSTR 【lpFileName】, | //指向文件名的指针 |
LPOFSTRUCT 【lpReOpenBuff】, | //指向缓冲区的文件信息 |
UINT 【uStyle】 | //动作和属性 |
); |
参数
【lpFileName】
指向以空字符结尾的字符串,命名要打开的文件。字符串必须包含来自Windows 3.【x】字符集的字符。OpenFile功能不支持Unicode文件名。
【lpReOpenBuff】
指向OFSTRUCT结构的文件,当它首次打开时接收该文件的信息。该结构可用于后续调用OpenFile函数以引用打开的文件。
OFSTRUCT结构包含一个路径名字符串成员,其长度限制为OFS_MAXPATHNAME个字符。OFS_MAXPATHNAME目前被定义为128。因此,您无法使用OpenFile功能打开路径长度超过128个字符的文件。CreateFile功能没有这样的路径长度限制。
【uStyle】
指定要执行的操作。可以使用按位OR运算符组合以下值:
值 | 含义 |
OF_CANCEL | 忽略。在Win32应用程序编程接口(API)中,OF_PROMPT样式产生一个包含取消按钮的对话框。 |
OF_CREATE | 创建一个新文件。如果文件已经存在,它将被截断为零长度。 |
OF_DELETE | 删除文件。 |
OF_EXIST | 打开文件,然后关闭它。用于测试文件的存在。 |
OF_PARSE | 填写OFSTRUCT结构,但不执行其他操作。 |
OF_PROMPT | 如果请求的文件不存在,显示一个对话框。该对话框通知用户Windows无法找到该文件,它包含重试和取消按钮。选择取消按钮指示OpenFile返回文件未找到的错误消息。 |
OF_READ | 打开文件仅供阅读。 |
OF_READWRITE | 打开文件进行阅读和写作。 |
OF_REOPEN | 使用重新打开缓冲区中的信息打开文件。 |
OF_SHARE_COMPAT | 对于使用Win32 API的基于MS-DOS的文件系统,以兼容模式打开文件,允许指定计算机上的任何进程打开文件多次。使用任何其他共享模式打开的其他努力失败。 Windows NT:此标志映射到CreateFile函数的FILE_SHARE_READ | FILE_SHARE_WRITE标志。 |
OF_SHARE_DENY_NONE | 打开文件,而不会拒绝对其他进程的读取或写入访问。在使用Win32 API的基于MS-DOS的文件系统上,如果文件已被任何其他进程的兼容模式打开,则该函数将失败。 Windows NT:此标志映射到CreateFile函数的FILE_SHARE_READ | FILE_SHARE_WRITE标志。 |
OF_SHARE_DENY_READ | 打开文件并拒绝对其他进程的读取访问。在使用Win32 API的基于MS-DOS的文件系统上,如果文件已在兼容模式下打开或者被其他进程读取,则该函数将失败。Windows NT:此标志映射到CreateFile函数的FILE_SHARE_WRITE标志。 |
OF_SHARE_DENY_WRITE | 打开文件并拒绝对其他进程的写入访问。在使用Win32 API的基于MS-DOS的文件系统上,如果该文件已在兼容模式下打开或被任何其他进程的写入访问,则该函数将失败。 Windows NT:此标志映射到CreateFile函数的FILE_SHARE_READ标志。 |
OF_SHARE_EXCLUSIVE | 以独占模式打开文件,拒绝对其他进程的读取和写入访问。如果在任何其他模式下打开文件进行读取或写入访问,即使是当前进程,该函数也会失败。 |
OF_VERIFY | 验证文件的日期和时间与以前打开的时间相同。这对于只读文件的额外检查是有用的。 |
OF_WRITE | 打开文件仅供写入。 |
返回值
如果函数成功,返回值指定一个文件句柄。
如果函数失败,返回值为HFILE_ERROR。要获取扩展错误信息,请调用GetLastError.
备注
如果【lpFileName】参数仅指定文件名和扩展名,则此函数按照显示的顺序搜索以下目录中的匹配文件:
1.应用程序加载的目录。
2.当前目录。
3.Windows 95: Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。
Windows NT: 32位Windows系统目录。使用GetSystemDirectory函数获取此目录的路径。该目录的名称是SYSTEM32。
4.Windows NT: 16位Windows系统目录。没有获取此目录的路径的Win32函数,但它被搜索。该目录的名称是SYSTEM。
5.Windows目录。使用GetWindowsDirectory函数获取此目录的路径。
6. PATH环境变量中列出的目录。
【lpFileName】参数不能包含通配符。
Win32 OpenFile功能不支持16位Windows OpenFile功能支持的OF_SEARCH标志。OF_SEARCH标志指示Windows搜索匹配文件,即使文件名包含完整路径。要在基于Win32的应用程序中搜索文件,请使用SearchPath功能。
要在使用后关闭文件,请调用_lclose功能。
也可以看看
CreateFile, GetSystemDirectory, GetWindowsDirectory, _lclose, OFSTRUCT, SearchPath