Open
 
使用文件操作打开磁盘文件进行读取或写入

语法

Open filename For Input [encoding_type ] [lock_type ] As [#]filenumber
Open filename For Output [encoding_type ] [lock_type ] As [#]filenumber
Open filename For Append [encoding_type ] [lock_type ] As [#]filenumber

Open filename For Binary [access_type ] [lock_type ] As [#]filenumber
Open filename For Random [access_type ] [lock_type ] As [#]filenumber [Len = record_length ]

用法

result = Open (filename , For {Input|Output|Append}, As filenumber )
or
result = Open (filename , For Binary, Access {Read|Write}, As filenumber )
or
result = Open (filename , For Random, Access {Read|Write}, As filenumber [, Len = record_length ] )
or
Open filename For {Input|Output|Append} As filenumber
or
Open filename For Binary Access {Read|Write} As filenumber
or
Open filename For Random Access {Read|Write} As filenumber [Len = record_length ]


参数

filename
要打开的磁盘文件的名称的字符串值。相对文件路径是相对于当前目录(参见CurDir)。
encoding_type
读取或写入文本时使用的编码可以是以下之一:
      • Encoding "ascii" (ASCII encoding is used, default)
      • Encoding "utf8" (8-bit Unicode encoding is used)
      • Encoding "utf16" (16-bit Unicode encoding is used)
      • Encoding "utf32" (32-bit Unicode encoding is used)
access_type
调用进程请求的访问类型。
      • Access [Read] [Write] (both read and write access can be used, which is the default)
lock_type
对其他进程(线程或程序)的磁盘文件访问进行限制,可以是:
      • Shared (the file can be freely accessed by other processes)
      • Lock [Read] [Write] (both read and write access can be denied to other processes)
filenum
要绑定到磁盘文件的可用文件编号,可以使用FreeFile找到。
record_length
从磁盘文件读取或写入的每个记录的大小(以字节为单位)。默认值为128.

返回值

在第一次使用中,Open在成功时返回零(0),否则返回非零错误代码。

说明

打开一个磁盘文件进行阅读和/或写入。文件编号file_num 绑定到磁盘上的文件,用于后续文件操作,如Input #Lock.可以使用FreeFile检索下一个可用的文件编号。

InputOutputAppend文件模式打开用于顺序文本I / O的磁盘文件,可用于读取或写入纯文本文件。
当指定Input模式时,只能读取文件操作,如Line Input #Get #.如果磁盘文件不存在,将抛出运行时错误。
Append模式指定只能使用写入操作,如Print #Put #.写入操作将在磁盘文件的末尾进行,如果存在,则保留现有的数据。
Output模式类似于Append模式,只是如果文件存在,则其内容将被删除,并且其长度在写入之前将重置为零。

InputOutputAppend文件模式还允许选择在从磁盘文件读取或写入文本时使用的字符编码。可以指定ASCII或Unicode编码(参见上面的encoding_type 参数的描述)。

BinaryRandom文件模式打开磁盘文件,用于随机访问读取或写入任意大小的二进制数据。Binary文件模式允许使用二进制读取或写入操作(如Get #)读取和写入简单数据类型值,如ByteLongInt.LOCSeek是用于读取和写入磁盘文件中任意位置的过程之一。Random文件模式类似于Binary,但文件I / O操作在读取或写入时始终使用常量数据大小。

默认情况下,BinaryRandom文件模式允许对打开的磁盘文件进行读写操作,但可以通过指定访问类型进行更改(请参阅上述access_type 参数的说明)。

对于任何文件模式,可以通过指定锁定类型(请参阅上述lock_type 参数的说明)来限制或授予对其他线程或程序的访问权限。如果没有指定锁定类型,当前程序的其他线程可以自由打开磁盘文件(Shared),而其他程序不能(Lock Read Write)。LockUnlock可用于临时限制对文件部分的访问。

可以使用Err在下一行中检查Open返回的错误代码。Open的功能版本直接返回错误代码作为整数。

例子

'创建一个字符串并填充它。
Dim buffer As String, f As Integer
buffer = "一个文件中的Hello World。"

'找到第一个免费的文件号。
f = FreeFile

'打开文件“file.ext”进行二进制使用,使用文件号“f”。
Open "file.ext" For Binary As #f
If Err>0 Then Print "打开文件时出错":End

'将我们的字符串放在文件中,使用数字“f”。
Put #f, , buffer

'关闭所有打开的文件。
Close

'结束程序。(运行时查看文件“file.ext”查看输出。)
End


'OPEN A COM PORT
Open Com "COM1:9600,N,8,1" As #1
If Err>0 Then Print "端口无法打开。"

'COM1, 9600 BAUD, NO PARITY BIT, EIGHT DATA BITS, ONE STOP BIT

'功能版OPEN
If Open("file.ext" For Binary Access Read As #1) = 0 Then

    Print "成功打开文件"

    ''...

    Close #1

Else

    Print "打开文件时出错"

End If


平台差异

  • Linux需要filename 与文件的真实名称匹配。Windows和DOS不区分大小写。
  • Linux中的路径分隔符是正斜杠/ .Windows使用反斜杠\\ ,但允许正斜杠/ .DOS使用反斜杠\\ .
  • 在Windows上,动态链接库中使用的文件号与主程序中使用的文件号不同。文件编号不能传递或返回,然后在DLL和可执行文件之间使用。
  • 如果您尝试在Linux上打开一个目录,打开命令将成功。

与QB差别

方言差异

  • -lang qb 方言支持旧的GW-BASIC风格的语法OPEN mode_string,#filenum,filename [length],mode_string为“I”输入,“O “输出,”A“附加,”R“为随机,”B“为二进制。

参考