### Godot version

v4.1.rc2.official [46424488e]

### System information

win10 21H2,Vulkan API 1.2.0

### Issue description

```
E 0:00:00:0469   Node2D.gd:7 @ _ready(): Condition "f.is_null()" is true. Returning: nullptr
  <C++ 源文件>      core/io/file_access_zip.cpp:51 @ godot_open()
  <栈追踪>          Node2D.gd:7 @ _ready()

E 0:00:00:0471   Node2D.gd:7 @ _ready(): Condition "!zfile" is true. Returning: false
  <C++ 源文件>      core/io/file_access_zip.cpp:171 @ try_open_pack()
  <栈追踪>          Node2D.gd:7 @ _ready()

```

### Steps to reproduce

run mini project

### Minimal reproduction project

[test_path.zip](https://github.com/godotengine/godot/files/11928867/test_path.zip)

int err = unzGetGlobalInfo64(zfile, &gi);
	ERR_FAIL_COND_V(err != UNZ_OK, false);
	Package pkg;
	pkg.filename = p_path;
	pkg.zfile = zfile;
	packages.push_back(pkg);
	int pkg_num = packages.size() - 1;
	for (uint64_t i = 0; i < gi.number_entry; i++) {
		char filename_inzip[256];
		unz_file_info64 file_info;
		err = unzGetCurrentFileInfo64(zfile, &file_info, filename_inzip, sizeof(filename_inzip), nullptr, 0, nullptr, 0);
		ERR_CONTINUE(err != UNZ_OK);
		File f;
		f.package = pkg_num;
		unzGetFilePos(zfile, &f.file_pos);
		String fname = String("res://") + String::utf8(filename_inzip);
		files[fname] = f;
		uint8_t md5[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
		PackedData::get_singleton()->add_path(p_path, fname, 1, 0, md5, this, p_replace_files, false);
		
		if ((i + 1) < gi.number_entry) {
			unzGoToNextFile(zfile);
		}
	}
	return true;
}
bool ZipArchive::file_exists(String p_name) const {
	return files.has(p_name);
}
Ref<FileAccess> ZipArchive::get_file(const String &p_path, PackedData::PackedFile *p_file) {