使用文件操作打开磁盘文件进行读取或写入
语法
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
record_length
从磁盘文件读取或写入的每个记录的大小(以字节为单位)。默认值为128.
返回值
在第一次使用中,Open在成功时返回零(0),否则返回非零错误代码。
说明
例子
'创建一个字符串并填充它。
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“为二进制。
参考