FileOpen 函数
更新: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 _
)
参数
FileNumber
必需。任何有效文件号。使用 FreeFile 函数可获取下一个可用的文件号。FileName
必需。指定文件名的 String 表达式,该文件名可以包括目录(或文件夹)和驱动器。Mode
必需。指定文件模式的枚举:Append、Binary、Input、Output 或 Random。(有关更多信息,请参见 OpenMode 枚举。)Access
可选。指定在打开的文件上允许的操作的枚举:Read、Write 或 ReadWrite。默认为 ReadWrite。(有关更多信息,请参见 OpenAccess 枚举。)Share
可选。指定其他进程不允许在打开的文件上执行的操作的枚举:Shared、Lock Read、Lock Write 和 Lock Read Write。默认为 Lock Read Write。(有关更多信息,请参见 OpenShare 枚举。)RecordLength
可选。小于或等于 32,767(字节)的数。对于以随机访问模式打开的文件,此值是记录长度。对于顺序文件,该值是存入缓冲区的字符数。
异常
异常类型 |
错误号 |
条件 |
---|---|---|
无效的 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)
智能设备开发人员说明
不支持此函数。
要求
**模块:**FileSystem
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)