FileSystem.FileOpen 方法

定义

打开一个文件以进行输入或输出。 相比 FileOpenMy 功能可使文件 I/O 操作的效率更高、性能更好。 有关详细信息,请参阅 FileSystem

public static void FileOpen (int FileNumber, string FileName, Microsoft.VisualBasic.OpenMode Mode, Microsoft.VisualBasic.OpenAccess Access = Microsoft.VisualBasic.OpenAccess.Default, Microsoft.VisualBasic.OpenShare Share = Microsoft.VisualBasic.OpenShare.Default, int RecordLength = -1);
static member FileOpen : int * string * Microsoft.VisualBasic.OpenMode * Microsoft.VisualBasic.OpenAccess * Microsoft.VisualBasic.OpenShare * int -> unit
Public Sub FileOpen (FileNumber As Integer, FileName As String, Mode As OpenMode, Optional Access As OpenAccess = Microsoft.VisualBasic.OpenAccess.Default, Optional Share As OpenShare = Microsoft.VisualBasic.OpenShare.Default, Optional RecordLength As Integer = -1)

参数

FileNumber
Int32

必需。 任何有效文件数。 可使用 FreeFile 函数获取下一个可用的文件号。

FileName
String

必需。 一个指定文件名的字符串表达式,其中可包含目录或文件夹以及驱动器。

Mode
OpenMode

必需。 指定文件模式的枚举:AppendBinaryInputOutputRandom。 有关更多信息,请参见OpenMode

Access
OpenAccess

可选。 一个枚举,它指定对打开的文件所允许进行的操作:ReadWriteReadWrite。 默认为 ReadWrite。 有关更多信息,请参见OpenAccess

Share
OpenShare

可选。 一个枚举,它指定不允许其他进程对打开的文件所进行的操作:SharedLock ReadLock WriteLock Read Write。 默认为 Lock Read Write。 有关更多信息,请参见OpenShare

RecordLength
Int32

可选。 小于或等于 32,767(字节)的数字。 对于为进行随机访问而打开的文件,此值是记录的长度。 对于顺序文件,此值是缓冲的字符数。

例外

记录长度是负数(并且不等于 -1)。

FileName 已经打开,或 FileName 无效。

示例

此示例演示函数的各种 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)

注解

提供 FileOpen 函数是为了向后兼容,可能会影响性能。 对于非旧应用程序,对象 My.Computer.FileSystem 提供更好的性能。 有关详细信息,请参阅 Visual Basic 中的文件访问

必须先打开文件,然后才能对该文件执行任何 I/O 操作。 FileOpen 为文件分配用于 I/O 的缓冲区,并确定要与缓冲区一起使用的访问模式。

重要

写入文件时,如果应用程序尝试写入的文件不存在,则应用程序可能必须创建文件。 为此,它需要具有在其中创建文件的目录的权限。 但是,如果 指定的 FileName 文件确实存在,则应用程序只需要 Write 对文件本身具有权限。 为了帮助提高安全性,请在部署期间创建文件,并仅向该文件授予权限,而不是向整个目录授予 Write 权限。 为了帮助提高安全性,请将数据写入用户目录,而不是写入根目录或 Program Files 目录。

可以使用 函数找到要打开的 FreeFile() 通道。

重要

函数 FileOpen 需要 ReadFileIOPermissionAccess 枚举访问,这可能会影响其在部分信任情况下的执行。 有关详细信息,请参阅 FileIOPermissionAccess

适用于

另请参阅