Directory

Inherits: Reference < Object

用于处理文件系统的类型。

描述

目录类型。用于管理目录及其内容(并不仅限于项目文件夹)。

新建 Directory 时,其默认打开的目录为 res://。这在将来可能会改变,因此建议始终使用 open 将您要操作的 Directory 初始化至想要操作的位置,并进行显式的错误检查。

注意:很多资源类型是经过导入的(例如纹理或声音文件),导出后的游戏中不会包含源素材,只会使用导入后的版本。请使用 ResourceLoader 访问导入后的资源。

下面是一个关于如何遍历目录文件的示例:

  1. func dir_contents(path):
  2. var dir = Directory.new()
  3. if dir.open(path) == OK:
  4. dir.list_dir_begin()
  5. var file_name = dir.get_next()
  6. while file_name != "":
  7. if dir.current_is_dir():
  8. print("发现目录:" + file_name)
  9. else:
  10. print("发现文件:" + file_name)
  11. file_name = dir.get_next()
  12. else:
  13. print("尝试访问路径时出错。")

教程

方法

Error

change_dir ( String todir )

Error

copy ( String from, String to )

bool

current_is_dir ( ) const

bool

dir_exists ( String path )

bool

file_exists ( String path )

String

get_current_dir ( )

int

get_current_drive ( )

String

get_drive ( int idx )

int

get_drive_count ( )

String

get_next ( )

int

get_space_left ( )

Error

list_dir_begin ( bool skip_navigational=false, bool skip_hidden=false )

void

list_dir_end ( )

Error

make_dir ( String path )

Error

make_dir_recursive ( String path )

Error

open ( String path )

Error

remove ( String path )

Error

rename ( String from, String to )

方法说明

将当前打开的目录改为参数传递的目录。参数可以是相对于当前目录的(例如 newdir.../newdir),也可以是绝对路径(例如 /tmp/newdirres://somedir/newdir)。

返回 Error 代码常量之一 (OK 成功时)。


from 文件复制到 to 目标位置。两个参数都应该是相对或绝对文件的路径。如果目标文件存在且没有访问保护,则会被覆盖。

返回Error代码常量之一(成功时返回OK)。


  • bool current_is_dir ( ) const

返回上一次 get_next 调用处理的当前项目是否为目录(..被认为是目录)。


返回目标目录是否存在。参数可以是相对于当前目录的路径,也可以是绝对路径。


返回目标文件是否存在。参数可以是相对于当前目录的路径,也可以是绝对路径。


Returns the absolute path to the currently opened directory (e.g. res://folder or C:\tmp\folder).


  • int get_current_drive ( )

返回当前打开的目录的驱动器索引。请参阅get_drive将返回的索引转换为驱动器的名称。


On Windows, returns the name of the drive (partition) passed as an argument (e.g. C:).

On macOS, returns the path to the mounted volume passed as an argument.

On Linux, returns the path to the mounted volume or GTK 3 bookmark passed as an argument.

On other platforms, or if the requested drive does not exist, the method returns an empty String.


  • int get_drive_count ( )

On Windows, returns the number of drives (partitions) mounted on the current filesystem.

On macOS, returns the number of mounted volumes.

On Linux, returns the number of mounted volumes and GTK 3 bookmarks.

On other platforms, the method returns 0.


返回当前目录中的下一个元素(文件或目录)(包括..,除非skip_navigational被赋予list_dir_begin)。

返回的是文件或目录的名称(而不是它的完整路径)。一旦流被完全处理,该方法返回一个空的String,并自动关闭流(即在这种情况下,list_dir_end将不是强制性的)。


  • int get_space_left ( )

在UNIX桌面系统上,返回当前目录磁盘上的可用空间。在其他平台上,此信息不可用,该方法返回0或-1。


  • Error list_dir_begin ( bool skip_navigational=false, bool skip_hidden=false )

初始化用于列出所有文件和目录的流,使用 get_next 函数,如果需要,可关闭当前打开的流。一旦流被处理完毕,通常应该用 list_dir_end 关闭。

skip_navigationaltrue 时会过滤掉 ...

skip_hiddentrue 时会过滤掉隐藏文件。


  • void list_dir_end ( )

关闭用list_dir_begin打开的当前流,并不关注是否已经用get_next完成处理。


创建一个目录。参数可以是当前目录的相对路径,也可以是绝对路径。目标目录应该放置在一个已经存在的目录中(如果要递归创建完整的路径,请参阅make_dir_recursive)。

返回 Error 代码常量之一(成功时返回 OK)。


通过递归调用 make_dir方法,创建一个目标目录和其路径中所有必要的中间目录。参数可以是相对于当前目录的,也可以是绝对路径。

返回Error代码常量之一(成功时返回OK)。


Opens an existing directory of the filesystem. The path argument can be within the project tree (res://folder), the user directory (user://folder) or an absolute path of the user filesystem (e.g. /tmp/folder or C:\tmp\folder).

Returns one of the Error code constants (OK on success).


删除目标文件或空目录。参数可以是相对于当前目录的,也可以是绝对路径。如果目标目录不是空的,操作将失败。

返回Error代码常量之一(成功时返回OK)。


from 文件或目录重命名且移动到 to 目标。两个参数都应该是文件或目录的相对路径或绝对路径。如果目标文件或目录存在且不受访问保护,它将被覆盖。

返回 Error 代码常量之一,成功时返回 OK