Directory
用于处理文件系统的类型。
描述
目录类型。用于管理目录及其内容(并不仅限于项目文件夹)。
新建 Directory
时,其默认打开的目录为 res://
。这在将来可能会改变,因此建议始终使用 open 将您要操作的 Directory
初始化至想要操作的位置,并进行显式的错误检查。
注意:很多资源类型是经过导入的(例如纹理或声音文件),导出后的游戏中不会包含源素材,只会使用导入后的版本。请使用 ResourceLoader 访问导入后的资源。
下面是一个关于如何遍历目录文件的示例:
func dir_contents(path):
var dir = Directory.new()
if dir.open(path) == OK:
dir.list_dir_begin()
var file_name = dir.get_next()
while file_name != "":
if dir.current_is_dir():
print("发现目录:" + file_name)
else:
print("发现文件:" + file_name)
file_name = dir.get_next()
else:
print("尝试访问路径时出错。")
教程
方法
change_dir ( String todir ) | |
current_is_dir ( ) const | |
dir_exists ( String path ) | |
file_exists ( String path ) | |
get_current_dir ( ) | |
get_drive_count ( ) | |
get_next ( ) | |
get_space_left ( ) | |
list_dir_begin ( bool skip_navigational=false, bool skip_hidden=false ) | |
void | list_dir_end ( ) |
make_dir_recursive ( String path ) | |
方法说明
将当前打开的目录改为参数传递的目录。参数可以是相对于当前目录的(例如 newdir
或 .../newdir
),也可以是绝对路径(例如 /tmp/newdir
或 res://somedir/newdir
)。
返回 Error 代码常量之一 (OK
成功时)。
将 from
文件复制到 to
目标位置。两个参数都应该是相对或绝对文件的路径。如果目标文件存在且没有访问保护,则会被覆盖。
返回Error代码常量之一(成功时返回OK
)。
- bool current_is_dir ( ) const
返回上一次 get_next 调用处理的当前项目是否为目录(.
和.
被认为是目录)。
返回目标目录是否存在。参数可以是相对于当前目录的路径,也可以是绝对路径。
返回目标文件是否存在。参数可以是相对于当前目录的路径,也可以是绝对路径。
- String get_current_dir ( )
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.
- String get_next ( )
返回当前目录中的下一个元素(文件或目录)(包括.
和.
,除非skip_navigational
被赋予list_dir_begin)。
返回的是文件或目录的名称(而不是它的完整路径)。一旦流被完全处理,该方法返回一个空的String,并自动关闭流(即在这种情况下,list_dir_end将不是强制性的)。
- int get_space_left ( )
在UNIX桌面系统上,返回当前目录磁盘上的可用空间。在其他平台上,此信息不可用,该方法返回0或-1。
初始化用于列出所有文件和目录的流,使用 get_next 函数,如果需要,可关闭当前打开的流。一旦流被处理完毕,通常应该用 list_dir_end 关闭。
skip_navigational
为 true
时会过滤掉 .
和 ..
。
skip_hidden
为 true
时会过滤掉隐藏文件。
- 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
。