ZIPReader¶
继承: RefCounted < Object
允许读取 ZIP 文件的内容。
描述¶
该课程实现了可以在zip存档中提取单个文件的内容的读者。 参见 ZIPPacker.
# 从zip存档中读取一个文件。
func read_zip_file():
var reader = ZIPReader.new()
var err = reader.open("user://archive.zip")
if err != OK:
return PackedByteArray()
var res = reader.read_file("hello.txt")
reader.close()
return res
# 从zip存档中提取所有文件,并保留其中的目录。
# 这就像大多数档案管理人员的“提取所有”功能一样。
func extract_all_from_zip():
var reader = ZIPReader.new()
reader.open("res://archive.zip")
# 提取的文件的目标目录(提取之前必须存在此文件夹)。
# 并非所有的zip档案都将所有内容都放在一个根文件夹中,
# 这意味着提取后可以在“ root_dir”中创建几个文件/文件夹。
var root_dir = DirAccess.open("user://")
var files = reader.get_files()
for file_path in files:
# 如果当前条目是目录。
if file_path.ends_with("/"):
root_dir.make_dir_recursive(file_path)
continue
# 写文件内容,在需要时自动创建文件夹。
# 文件输入到文件夹条目之前。
root_dir.make_dir_recursive(root_dir.get_current_dir().path_join(file_path).get_base_dir())
var file = FileAccess.open(root_dir.get_current_dir().path_join(file_path), FileAccess.WRITE)
var buffer = reader.read_file(file_path)
file.store_buffer(buffer)
方法¶
close() |
|
file_exists(path: String, case_sensitive: bool = true) |
|
方法说明¶
关闭该实例底层所使用的资源。
bool file_exists(path: String, case_sensitive: bool = true) 🔗
返回 true 如果文件存在于已加载的zip存档中。
必须在 open().
PackedStringArray get_files() 🔗
返回已加载存档中所有文件的名称列表。
必须在 open().
打开给定 path 的压缩文件,并读取其文件索引。
PackedByteArray read_file(path: String, case_sensitive: bool = true) 🔗
将文件的整体内容加载到已加载的zip存档中的内存中并返回。
必须在 open().