ZetCode

FreeBasic Close 关键字

最后修改日期:2025 年 6 月 16 日

FreeBasic 中的 Close 关键字用于关闭已打开的文件并释放系统资源。它是 FreeBasic 中正确文件处理的重要组成部分。文件在不再需要时应始终关闭。

基本定义

在 FreeBasic 中,Close 是一个终止对先前打开文件访问的语句。它确保所有缓冲数据都被写入,并将文件句柄返回给操作系统。

Close 语句可以处理指定的文件编号,或者在不带参数使用时关闭所有打开的文件。正确关闭文件可以防止数据丢失和资源泄漏。

关闭单个文件

此示例演示了具有显式关闭的基本文件操作。

close_basic.bas
Dim fileNum As Integer = FreeFile()
Open "data.txt" For Output As #fileNum

Print #fileNum, "Hello, FreeBasic!"
Close #fileNum

Print "File written and closed successfully"

在这里,我们打开一个文件进行写入,写入一些文本,然后使用文件编号显式关闭它。FreeFile 函数获取一个可用的文件编号。始终关闭文件是一种良好的编程习惯。

关闭所有打开的文件

Close 语句可以一次性关闭所有打开的文件。

close_all.bas
Open "file1.txt" For Output As #1
Open "file2.txt" For Output As #2
Open "file3.txt" For Output As #3

Print #1, "File 1 content"
Print #2, "File 2 content"
Print #3, "File 3 content"

Close ' Closes all open files

Print "All files closed"

此示例打开三个文件并向每个文件写入内容。无参数的 Close 语句同时关闭所有打开的文件。当您需要确保所有文件都正确关闭时,这非常有用。

在错误处理中使用 Close

即使在文件操作过程中发生错误,也应关闭文件。

close_error.bas
Dim fileNum As Integer = FreeFile()

On Error Goto ErrorHandler

Open "data.txt" For Input As #fileNum
Dim content As String
Line Input #fileNum, content
Print "File content: "; content

ErrorHandler:
If Err Then
    Print "Error: "; Error(Err)
    If fileNum Then Close #fileNum
    End
End If

Close #fileNum

此示例显示了在错误处理程序中正确关闭文件。无论是否发生错误,文件都会被关闭。If fileNum 检查可防止在文件在错误发生前未成功打开时出现错误。

使用二进制文件关闭

二进制文件在操作后也需要正确关闭。

close_binary.bas
Dim fileNum As Integer = FreeFile()
Dim buffer(0 To 99) As Byte

Open "data.bin" For Binary As #fileNum
Get #fileNum, , buffer()
Close #fileNum

Print "Read "; UBound(buffer) + 1; " bytes from binary file"

此代码演示了从二进制文件读取并关闭它。二进制文件处理原始数据,并且与文本文件一样需要谨慎的资源管理。Close 语句对所有文件类型的工作方式相同。

在文件复制操作中使用 Close

文件复制需要正确处理源文件和目标文件。

close_copy.bas
Dim srcFile As Integer = FreeFile()
Dim dstFile As Integer = FreeFile() + 1
Dim line As String

Open "source.txt" For Input As #srcFile
Open "destination.txt" For Output As #dstFile

While Not EOF(srcFile)
    Line Input #srcFile, line
    Print #dstFile, line
Wend

Close #srcFile
Close #dstFile

Print "File copied successfully"

此示例逐行复制文件。操作完成后,两个文件都会被显式关闭。请注意,我们为源文件和目标文件使用了不同的文件编号。完成后始终关闭所有文件。

使用随机访问文件关闭

使用随机访问文件后也需要正确关闭。

close_random.bas
Type Person
    name As String * 20
    age As Integer
End Type

Dim p As Person
Dim fileNum As Integer = FreeFile()

Open "people.dat" For Random As #fileNum Len = Len(p)
p.name = "John Doe"
p.age = 30
Put #fileNum, 1, p
Close #fileNum

Print "Record written and file closed"

此示例将记录写入随机访问文件并关闭它。随机访问文件允许在特定位置进行读/写。Close 语句的工作方式与其他文件类型相同。

在文件追加中使用 Close

向文件追加内容也需要正确关闭。

close_append.bas
Dim fileNum As Integer = FreeFile()

Open "log.txt" For Append As #fileNum
Print #fileNum, "New log entry: "; Time
Close #fileNum

Print "Log entry appended and file closed"

此示例演示了向文件追加内容并关闭它。追加模式会在写入前自动定位到文件末尾。Close 确保新内容已正确保存到磁盘。

最佳实践

本教程涵盖了 FreeBasic 的 Close 关键字,并提供了实际示例,展示了其在不同文件处理场景中的用法。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直在撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出所有 FreeBasic 教程