get_file
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — get_file
get_file
定义
get_file 用来从一个完整的文件路径中提取出文件名部分(含扩展名)。你可以把它想象成"在一串地址里找到最后的那个名字":"res://assets/textures/player.png" 提取出 "player.png"。
它会找到路径中最后一个 /(或 \)后面的内容。
函数签名
C#
// Godot.StringExtensions 方法
public static string GetFile(this string instance)GDScript
func get_file() -> String参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
| 无 | — | — | 这是一个无参数方法,直接对字符串本身操作 |
返回值
类型: string / String
返回路径中最后一个 / 或 \ 之后的部分。如果路径中没有分隔符,则返回整个字符串。
代码示例
基础用法
C#
using Godot;
public partial class GetFileExample : Node
{
public override void _Ready()
{
GD.Print("res://assets/player.png".GetFile());
// 运行结果: player.png
GD.Print("user://save_data/config.cfg".GetFile());
// 运行结果: config.cfg
GD.Print("standalone_file.txt".GetFile());
// 运行结果: standalone_file.txt(没有路径分隔符,原样返回)
}
}GDScript
extends Node
func _ready():
print("res://assets/player.png".get_file())
# 运行结果: player.png
print("user://save_data/config.cfg".get_file())
# 运行结果: config.cfg
print("standalone_file.txt".get_file())
# 运行结果: standalone_file.txt(没有路径分隔符,原样返回)实际场景:在 UI 中显示友好的文件名
C#
using Godot;
public partial class FileListDisplay : Node
{
public override void _Ready()
{
string[] resourcePaths = {
"res://scenes/levels/level_01.tscn",
"res://scenes/levels/level_02.tscn",
"res://scenes/boss_fight.tscn"
};
GD.Print("=== 可用关卡 ===");
foreach (string path in resourcePaths)
{
// 提取文件名,再去掉扩展名,显示更友好
string fileName = path.GetFile();
string displayName = fileName.GetBaseName();
GD.Print($"- {displayName}");
}
// 运行结果:
// === 可用关卡 ===
// - level_01
// - level_02
// - boss_fight
}
}GDScript
extends Node
func _ready():
var resource_paths := [
"res://scenes/levels/level_01.tscn",
"res://scenes/levels/level_02.tscn",
"res://scenes/boss_fight.tscn"
]
print("=== 可用关卡 ===")
for path in resource_paths:
# 提取文件名,再去掉扩展名,显示更友好
var file_name := path.get_file()
var display_name := file_name.get_basename()
print("- " + display_name)
# 运行结果:
# === 可用关卡 ===
# - level_01
# - level_02
# - boss_fight进阶用法:处理不同操作系统的路径格式
C#
using Godot;
public partial class GetFileAdvanced : Node
{
public override void _Ready()
{
// Windows 风格路径(反斜杠也能正确处理)
GD.Print(@"C:\Users\player\Documents\save.dat".GetFile());
// 运行结果: save.dat
// 路径末尾有斜杠
GD.Print("res://assets/".GetFile());
// 运行结果: (空字符串,因为斜杠后面没有内容)
// 多个连续斜杠
GD.Print("res://assets//textures///ui.png".GetFile());
// 运行结果: ui.png
}
}GDScript
extends Node
func _ready():
# Windows 风格路径(反斜杠也能正确处理)
print("C:\\Users\\player\\Documents\\save.dat".get_file())
# 运行结果: save.dat
# 路径末尾有斜杠
print("res://assets/".get_file())
# 运行结果: (空字符串,因为斜杠后面没有内容)
# 多个连续斜杠
print("res://assets//textures///ui.png".get_file())
# 运行结果: ui.png注意事项
- 返回含扩展名的文件名:
get_file返回的是完整的文件名(包括扩展名),如"player.png"。如果只想获取不含扩展名的名称,需要再调用GetBaseName(GDScript 中get_basename)。 - 路径末尾斜杠:如果路径以
/或\结尾,get_file会返回空字符串。 - C# 替代方案:C# 的
System.IO.Path.GetFileName()功能相同,但GetFile能正确处理 Godot 的res://和user://路径前缀。 - 与
get_base_dir配合:get_file提取文件名,GetBaseDir(GDScript 中get_base_dir)提取目录部分。两者互补。
