更新:2007 年 11 月
打开输入或输出文件。
在文件 I/O 操作中,My 功能具有比 FileOpen 更高的效率和更好的性能。有关更多信息,请参见 My.Computer.FileSystem 对象。
Public Sub FileOpen( _
ByVal FileNumber As Integer, _
ByVal FileName As String, _
ByVal Mode As OpenMode, _
Optional ByVal Access As OpenAccess = OpenAccess.Default, _
Optional ByVal Share As OpenShare = OpenShare.Default, _
Optional ByVal RecordLength As Integer = -1 _
)异常类型 | 错误号 | 条件 |
|---|---|---|
无效的 Access、Share 或 Mode。 | ||
WriteOnly 文件打开以用于 Input。 | ||
ReadOnly 文件打开以用于 Output。 | ||
ReadOnly 文件打开以用于 Append。 | ||
记录长度是负数(并且不等于 -1)。 | ||
FileNumber 无效(<-1 或 >255),或 FileNumber 已被使用。 | ||
FileName 已经打开,或 FileName 无效。 |
如果正在升级使用非结构化错误处理方式的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象) 比较错误号。) 然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述 替换这种错误控制。
提供 FileOpen 函数是为了实现向后兼容性,可能影响性能。对于非旧式应用程序,My.Computer.FileSystem 对象将提供更好的性能。有关更多信息,请参见 使用 Visual Basic 访问文件。
您必须先打开文件,才能在此文件上执行任何 I/O 操作。FileOpen 将用于 I/O 的缓冲区分配到文件,并确定对此缓冲区使用的访问模式。
安全说明: |
|---|
写入文件时,如果尝试写入的文件不存在,应用程序可能需要创建一个文件。为此,应用程序需要具有创建该文件所在的那个目录的写权限。但是,如果 FileName 指定的文件的确存在,则应用程序只需要该文件本身的 Write 权限。为帮助提高安全性,尽可能地在部署时创建该文件并且只授予对该文件的 Write 权限,而不是授予对整个目录的写权限。为了帮助提高安全性,请将数据写入用户目录,而非根目录或 Program Files 目录。 |
可用 FreeFile() 函数找到要打开的信道。
安全说明: |
|---|
FileOpen 函数需要 FileIOPermissionAccess 枚举的 Read 访问权限,在部分信任情况下可能会影响其执行。有关更多信息,请参见 FileIOPermissionAccess 枚举和 请求权限。 |
本示例阐释 FileOpen 函数启用文件输入和输出的不同用法。
下面的代码以 Input 模式打开文件 TestFile。
FileOpen(1, "TESTFILE", OpenMode.Input)
' Close before reopening in another mode.
FileClose(1)
该示例以 Binary 模式打开该文件进行只写操作。
FileOpen(1, "TESTFILE", OpenMode.Binary,OpenAccess.Write)
' Close before reopening in another mode.
FileClose(1)
下面的示例以 Random 模式打开该文件。该文件包含结构 Person 的记录。
Structure Person
<VBFixedString(30)> Dim Name As String
Dim ID As Integer
End Structure
Public Sub ExampleMethod()
' Count 30 for the string, plus 4 for the integer.
FileOpen(1, "TESTFILE", OpenMode.Random, , , 34)
' Close before reopening in another mode.
FileClose(1)
End Sub
该代码示例以 Output 模式打开该文件;任何进程都可以读取或写入该文件。
FileOpen(1, "TESTFILE", OpenMode.Output, OpenAccess.Default, OpenShare.Shared)
' Close before reopening in another mode.
FileClose(1)
该代码示例以 Binary 模式打开该文件进行读取;其他进程无法读取该文件。
FileOpen(1, "TESTFILE", OpenMode.Binary, OpenAccess.Read, _
OpenShare.LockRead)
安全说明: