Functions.FOpen 方法 (String, UInt32) | |
打开一个文件。
命名空间:
XSharp.Core
程序集:
XSharp.Core (在 XSharp.Core.dll 中) 版本:2.22 GA
语法 FUNCTION FOpen(
cFileName AS STRING,
kMode AS DWORD
) AS IntPtr
public static IntPtr FOpen(
string cFileName,
uint kMode
)
查看代码参数
- cFileName
- 类型:String
文件名,包括可选的驱动器、目录和扩展名。忽略 SetDefault() 和 SetPath() 设置;除非您在文件名中指定驱动器和目录,否则使用 Windows 默认值。不假定任何扩展名。
在发生并发控制冲突的情况下,此函数设置 NetErr()。
- kMode
- 类型:UInt32
DOS 打开模式,决定文件的可访问性。
打开模式由两种类型的模式组成:访问模式 + 共享模式。指定访问模式常量表示如何访问打开的文件;共享模式决定其他进程如何访问该文件。
可用的打开和共享模式常量如下:
访问模式 操作
FO_READ 打开以读取(默认)
FO_READWRITE 打开以读取或写入
FO_WRITE 打开以写入
共享模式 操作
FO_COMPAT 兼容模式(默认)
FO_DENYNONE 允许其他人读取或写入
FO_DENYREAD 阻止其他人读取
FO_DENYWRITE 阻止其他人写入
FO_EXCLUSIVE 独占使用
FO_SHARED 与 FO_DENYNONE 相同
默认打开模式是不可共享和只读。
如果仅使用访问模式,文件将以不可共享的方式打开。
返回值
类型:
IntPtr
打开文件的文件句柄,范围为 0 到 32,767。
此值类似于数据库系统中的别名,用于向其他文件函数标识打开的文件。
因此,将返回值分配给变量以供后续使用很重要,如下面的示例所示。
如果发生错误,FOpen() 返回 F_ERROR。可以使用 FError() 确定具体错误。
备注
FOpen() 是一个低级文件函数,用于打开现有文件以进行读取和写入,具体取决于 kMode 参数。
请注意,为了让两个进程同时使用同一个文件,两个文件都应以 FO_SHARED 共享模式打开。
每当出现错误时,可以使用 FError() 确定具体错误。
例如,如果文件不存在,FOpen() 返回 F_ERROR,FError() 返回 2 表示未找到文件。
备注 提示: |
---|
X# 运行时中的低级文件 IO 函数在后台使用 .Net 文件流。
这意味着 FOpen() 和 FCreate() 返回的文件句柄不是'正常'的文件句柄,而是用于在运行时的流集合中找到底层流对象的唯一标识符。
这也意味着你不能使用 FRead() 和 FWrite() 这样的函数,这些函数不是在 X# 运行时中创建的文件句柄。
如果你想访问底层的 FileStream,你应该调用函数 FGetStream(IntPtr) |
示例
此示例使用 FOpen() 以可共享读/写状态打开文件,如果打开失败则显示错误消息:
1ptrHandle := FOpen("temp.txt")
2IF ptrHandle = F_ERROR
3 ? DOSErrString(FError())
4ENDIF
此示例使用 FOpen() 打开文件,如果 FOpen() 失败则可选重试:
1FUNCTION NetOpen(cFile AS STRING,;
2 wMode AS DWORD, wSeconds AS DWORD);
3 AS LOGIC PASCAL
4 LOCAL lForever AS LOGIC
5
6 lForever := (wSeconds = 0)
7 DO WHILE (lForever .OR. wSeconds > 0)
8 IF FOpen(cFile, wMode) != F_ERROR
9 RETURN TRUE
10 ENDIF
11 InKey(1)
12 wSeconds -= 1
13 ENDDO
14 RETURN FALSE
参见