ZetCode

FreeBasic MkDir 和 RmDir 关键字

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

FreeBasic 的 MkDirRmDir 关键字允许创建和删除目录。它们对于 FreeBasic 程序中的文件系统管理至关重要。

基本定义

MkDir 使用指定的路径创建一个新目录。该路径可以是绝对路径,也可以是相对于当前目录的相对路径。

RmDir 删除一个空目录。该目录必须是空的,并且程序必须具有足够的权限来删除它。

如果操作失败,这两个命令都会引发错误。在处理目录时,错误处理非常重要。

创建简单目录

此示例使用 MkDir 演示了基本的目录创建。

mkdir_simple.bas
MkDir "myfolder"

If Dir("myfolder", fbDirectory) <> "" Then
    Print "Directory created successfully"
Else
    Print "Failed to create directory"
End If

这里我们在当前工作目录中创建一个名为“myfolder”的目录。我们使用 Dir 函数验证创建。fbDirectory 属性检查目录是否存在。

删除目录

此示例展示了如何使用 RmDir 删除空目录。

rmdir_simple.bas
' First create a directory to remove
MkDir "tempdir"

RmDir "tempdir"

If Dir("tempdir", fbDirectory) = "" Then
    Print "Directory removed successfully"
Else
    Print "Failed to remove directory"
End If

我们首先创建一个临时目录,然后将其删除。Dir 检查确认目录不再存在。请注意,RmDir 仅适用于空目录。

创建嵌套目录

FreeBasic 可以通过多个 MkDir 调用来创建嵌套目录结构。

mkdir_nested.bas
MkDir "parent"
MkDir "parent/child"
MkDir "parent/child/grandchild"

If Dir("parent/child/grandchild", fbDirectory) <> "" Then
    Print "Nested directories created successfully"
End If

RmDir "parent/child/grandchild"
RmDir "parent/child"
RmDir "parent"

这将创建一个三级目录结构。我们分别创建每个级别。该示例还通过按相反顺序删除目录来展示正确的清理。

目录错误处理

在处理目录操作时,正确的错误处理至关重要。

directory_errors.bas
On Error Goto ErrorHandler

' Try to create a directory that might exist
MkDir "existing_folder"

Exit Sub

ErrorHandler:
    Print "Error "; Err; ": "; Error(Err)
    Resume Next

此示例演示了目录操作的错误处理。On Error Goto 语句会捕获目录创建期间的任何错误。我们打印错误编号和描述。

使用绝对路径创建目录

MkDir 可以使用绝对路径创建目录。

mkdir_absolute.bas
#Ifdef __FB_WIN32__
    MkDir "C:\fb_temp"
    If Dir("C:\fb_temp", fbDirectory) <> "" Then
        Print "Directory created on C drive"
        RmDir "C:\fb_temp"
    End If
#Else
    MkDir "/tmp/fb_temp"
    If Dir("/tmp/fb_temp", fbDirectory) <> "" Then
        Print "Directory created in /tmp"
        RmDir "/tmp/fb_temp"
    End If
#EndIf

此特定于平台的示例在系统位置创建目录。Windows 使用 C:\,而 Linux/Unix 使用 /tmp。代码使用预处理器指令检查平台。

创建前检查目录是否存在

在创建目录之前检查它是否存在是一个好习惯。

mkdir_check.bas
Dim folderName As String = "new_data"

If Dir(folderName, fbDirectory) = "" Then
    MkDir folderName
    Print "Directory created: "; folderName
Else
    Print "Directory already exists: "; folderName
End If

此代码首先使用 Dir 检查目录是否存在。只有在不存在的情况下,我们才创建它。这可以防止因尝试创建现有目录而导致的错误。

删除非空目录

要删除非空目录,我们必须先删除其内容。

rmdir_nonempty.bas
' Create test structure
MkDir "to_delete"
Open "to_delete/file1.txt" For Output As #1
Print #1, "test"
Close #1

' Delete contents
Kill "to_delete/file1.txt"
RmDir "to_delete"

If Dir("to_delete", fbDirectory) = "" Then
    Print "Non-empty directory removed successfully"
End If

此示例创建了一个包含文件的目录,然后演示了正确的删除方法。我们首先使用 Kill 删除文件,然后使用 RmDir 删除空目录。

最佳实践

本教程通过实际的目录管理示例,涵盖了 FreeBasic 的 MkDirRmDir 关键字。

作者

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

列出所有 FreeBasic 教程