:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/FileAccess.xml. .. _class_FileAccess: FileAccess ========== **继承:** :ref:`RefCounted` **<** :ref:`Object` 提供用于文件读写操作的方法。 .. rst-class:: classref-introduction-group 描述 ---- 这个类可以用于在用户设备的文件系统中永久存储数据,也可以从中读取数据。适用于存储游戏存档数据或玩家配置文件。 下面是一个关于如何写入和读取文件的示例: .. tabs:: .. code-tab:: gdscript func save_to_file(content): var file = FileAccess.open("user://save_game.dat", FileAccess.WRITE) file.store_string(content) func load_from_file(): var file = FileAccess.open("user://save_game.dat", FileAccess.READ) var content = file.get_as_text() return content .. code-tab:: csharp public void SaveToFile(string content) { using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Write); file.StoreString(content); } public string LoadFromFile() { using var file = FileAccess.Open("user://save_game.dat", FileAccess.ModeFlags.Read); string content = file.GetAsText(); return content; } 在上面的例子中,文件将被保存在\ :doc:`数据路径 <../tutorials/io/data_paths>`\ 文件中指定的用户数据文件夹中。 \ **FileAccess** 会在释放时关闭,超出作用于、赋值为 ``null`` 等情况都会导致释放。可以使用 :ref:`close` 在此之前显式关闭。在 C# 中,引用必须手动释放,可以通过 ``using`` 语句或直接调用 ``Dispose`` 方法来完成。 \ **注意:**\ 要在导出后访问项目资源,建议使用 :ref:`ResourceLoader` 而不是 **FileAccess**\ ,因为有些文件已被转换为特定于引擎的格式,并且它们的原始源文件可能并不存在于导出的 PCK 包中。 \ **注意:**\ 只有当进程“正常”退出时(例如通过单击窗口管理器的关闭按钮或按 **Alt + F4**\ ),文件才会自动关闭。如果在项目运行时按 **F8** 停止项目执行,则不会关闭文件,因为游戏进程将被杀死。可以通过定期调用 :ref:`flush` 来解决这个问题。 .. rst-class:: classref-introduction-group 教程 ---- - :doc:`文件系统 <../tutorials/scripting/filesystem>` - :doc:`运行时文件加载与保存 <../tutorials/io/runtime_file_loading_and_saving>` - `3D 体素演示 `__ .. rst-class:: classref-reftable-group 属性 ---- .. table:: :widths: auto +-------------------------+---------------------------------------------------------+ | :ref:`bool` | :ref:`big_endian` | +-------------------------+---------------------------------------------------------+ .. rst-class:: classref-reftable-group 方法 ---- .. table:: :widths: auto +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`close`\ (\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`eof_reached`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`file_exists`\ (\ path\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`flush`\ (\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_8`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_16`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_32`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_64`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_as_text`\ (\ skip_cr\: :ref:`bool` = false\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`get_buffer`\ (\ length\: :ref:`int`\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedStringArray` | :ref:`get_csv_line`\ (\ delim\: :ref:`String` = ","\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_double`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`get_error`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`get_file_as_bytes`\ (\ path\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_file_as_string`\ (\ path\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_float`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_hidden_attribute`\ (\ file\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_length`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_line`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_md5`\ (\ path\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_modified_time`\ (\ file\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`get_open_error`\ (\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_pascal_string`\ (\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_path`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_path_absolute`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_position`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_read_only_attribute`\ (\ file\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_real`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_sha256`\ (\ path\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |bitfield|\[:ref:`UnixPermissionFlags`\] | :ref:`get_unix_permissions`\ (\ file\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`get_var`\ (\ allow_objects\: :ref:`bool` = false\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_open`\ (\ ) |const| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`FileAccess` | :ref:`open`\ (\ path\: :ref:`String`, flags\: :ref:`ModeFlags`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`FileAccess` | :ref:`open_compressed`\ (\ path\: :ref:`String`, mode_flags\: :ref:`ModeFlags`, compression_mode\: :ref:`CompressionMode` = 0\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`FileAccess` | :ref:`open_encrypted`\ (\ path\: :ref:`String`, mode_flags\: :ref:`ModeFlags`, key\: :ref:`PackedByteArray`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`FileAccess` | :ref:`open_encrypted_with_pass`\ (\ path\: :ref:`String`, mode_flags\: :ref:`ModeFlags`, pass\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`resize`\ (\ length\: :ref:`int`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`seek`\ (\ position\: :ref:`int`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`seek_end`\ (\ position\: :ref:`int` = 0\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`set_hidden_attribute`\ (\ file\: :ref:`String`, hidden\: :ref:`bool`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`set_read_only_attribute`\ (\ file\: :ref:`String`, ro\: :ref:`bool`\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`set_unix_permissions`\ (\ file\: :ref:`String`, permissions\: |bitfield|\[:ref:`UnixPermissionFlags`\]\ ) |static| | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_8`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_16`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_32`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_64`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_buffer`\ (\ buffer\: :ref:`PackedByteArray`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_csv_line`\ (\ values\: :ref:`PackedStringArray`, delim\: :ref:`String` = ","\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_double`\ (\ value\: :ref:`float`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_float`\ (\ value\: :ref:`float`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_line`\ (\ line\: :ref:`String`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_pascal_string`\ (\ string\: :ref:`String`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_real`\ (\ value\: :ref:`float`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_string`\ (\ string\: :ref:`String`\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`store_var`\ (\ value\: :ref:`Variant`, full_objects\: :ref:`bool` = false\ ) | +-------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 枚举 ---- .. _enum_FileAccess_ModeFlags: .. rst-class:: classref-enumeration enum **ModeFlags**: :ref:`🔗` .. _class_FileAccess_constant_READ: .. rst-class:: classref-enumeration-constant :ref:`ModeFlags` **READ** = ``1`` 打开文件进行读取操作。光标位于文件的开头。 .. _class_FileAccess_constant_WRITE: .. rst-class:: classref-enumeration-constant :ref:`ModeFlags` **WRITE** = ``2`` 打开文件进行写操作。如果文件不存在则会创建该文件,如果存在则会截断。 \ **注意:**\ 创建文件必须在已有目录中执行。如果要递归创建文件路径中的目录,见 :ref:`DirAccess.make_dir_recursive`\ 。 .. _class_FileAccess_constant_READ_WRITE: .. rst-class:: classref-enumeration-constant :ref:`ModeFlags` **READ_WRITE** = ``3`` 打开文件用于读写操作。不截断文件。光标位于文件的开头。 .. _class_FileAccess_constant_WRITE_READ: .. rst-class:: classref-enumeration-constant :ref:`ModeFlags` **WRITE_READ** = ``7`` 打开文件进行读写操作。如果文件不存在则会创建该文件,如果存在则会截断。光标位于文件的开头。 \ **注意:**\ 创建文件必须在已有目录中执行。如果要递归创建文件路径中的目录,见 :ref:`DirAccess.make_dir_recursive`\ 。 .. rst-class:: classref-item-separator ---- .. _enum_FileAccess_CompressionMode: .. rst-class:: classref-enumeration enum **CompressionMode**: :ref:`🔗` .. _class_FileAccess_constant_COMPRESSION_FASTLZ: .. rst-class:: classref-enumeration-constant :ref:`CompressionMode` **COMPRESSION_FASTLZ** = ``0`` 使用 `FastLZ `__ 压缩方法。 .. _class_FileAccess_constant_COMPRESSION_DEFLATE: .. rst-class:: classref-enumeration-constant :ref:`CompressionMode` **COMPRESSION_DEFLATE** = ``1`` 使用 `DEFLATE `__ 压缩方法。 .. _class_FileAccess_constant_COMPRESSION_ZSTD: .. rst-class:: classref-enumeration-constant :ref:`CompressionMode` **COMPRESSION_ZSTD** = ``2`` 使用 `Zstandard `__ 压缩方法。 .. _class_FileAccess_constant_COMPRESSION_GZIP: .. rst-class:: classref-enumeration-constant :ref:`CompressionMode` **COMPRESSION_GZIP** = ``3`` 使用 `gzip `__ 压缩方法。 .. _class_FileAccess_constant_COMPRESSION_BROTLI: .. rst-class:: classref-enumeration-constant :ref:`CompressionMode` **COMPRESSION_BROTLI** = ``4`` 使用 `brotli `__ 压缩方法(仅支持解压缩)。 .. rst-class:: classref-item-separator ---- .. _enum_FileAccess_UnixPermissionFlags: .. rst-class:: classref-enumeration flags **UnixPermissionFlags**: :ref:`🔗` .. _class_FileAccess_constant_UNIX_READ_OWNER: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_READ_OWNER** = ``256`` 读取所有者比特位。 .. _class_FileAccess_constant_UNIX_WRITE_OWNER: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_WRITE_OWNER** = ``128`` 写入所有者比特位。 .. _class_FileAccess_constant_UNIX_EXECUTE_OWNER: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_EXECUTE_OWNER** = ``64`` 执行所有者比特位。 .. _class_FileAccess_constant_UNIX_READ_GROUP: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_READ_GROUP** = ``32`` 读取组比特位。 .. _class_FileAccess_constant_UNIX_WRITE_GROUP: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_WRITE_GROUP** = ``16`` 写入组比特位。 .. _class_FileAccess_constant_UNIX_EXECUTE_GROUP: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_EXECUTE_GROUP** = ``8`` 执行组比特位。 .. _class_FileAccess_constant_UNIX_READ_OTHER: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_READ_OTHER** = ``4`` 读取其他比特位。 .. _class_FileAccess_constant_UNIX_WRITE_OTHER: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_WRITE_OTHER** = ``2`` 写入其他比特位。 .. _class_FileAccess_constant_UNIX_EXECUTE_OTHER: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_EXECUTE_OTHER** = ``1`` 执行其他比特位。 .. _class_FileAccess_constant_UNIX_SET_USER_ID: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_SET_USER_ID** = ``2048`` 在执行比特位上设置用户 ID 。 .. _class_FileAccess_constant_UNIX_SET_GROUP_ID: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_SET_GROUP_ID** = ``1024`` 在执行位上设置组 ID。 .. _class_FileAccess_constant_UNIX_RESTRICTED_DELETE: .. rst-class:: classref-enumeration-constant :ref:`UnixPermissionFlags` **UNIX_RESTRICTED_DELETE** = ``512`` 限制删除(粘性)比特位。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 属性说明 -------- .. _class_FileAccess_property_big_endian: .. rst-class:: classref-property :ref:`bool` **big_endian** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_big_endian**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_big_endian**\ (\ ) 如果为 ``true``\ ,则文件用大端\ `字节序 `__\ 读取。如果为 ``false``\ ,则文件以小端字节序读取。如果有疑问,请将其保留为 ``false``\ ,因为大多数文件都是用小端字节序编写的。 \ **注意:**\ :ref:`big_endian` 只与文件格式有关,与 CPU 类型无关。CPU 字节序不会影响写入文件的默认字节序。 \ **注意:**\ 每当打开文件时,该选项总是被重置为 ``false``\ 。因此,必须在打开文件\ *之后*\ 设置 :ref:`big_endian`\ ,而不是之前。 .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group 方法说明 -------- .. _class_FileAccess_method_close: .. rst-class:: classref-method |void| **close**\ (\ ) :ref:`🔗` 关闭当前打开的文件,阻止后续的读写操作。如果要将数据持久化到磁盘而不关闭文件,请使用 :ref:`flush`\ 。 \ **注意:**\ **FileAccess** 被释放时会自动关闭,释放发生在离开作用域或被赋值为 ``null`` 时。在 C# 中,使用完后必须弃置该引用,可以使用 ``using`` 语句或直接调用 ``Dispose`` 方法。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_eof_reached: .. rst-class:: classref-method :ref:`bool` **eof_reached**\ (\ ) |const| :ref:`🔗` 如果文件光标已经读到了文件末尾,则返回 ``true``\ 。 \ **注意:**\ ``eof_reached() == false`` 不能用于检查是否有更多可用数据。要在有更多可用数据时循环,请使用: .. tabs:: .. code-tab:: gdscript while file.get_position() < file.get_length(): # 读取数据 .. code-tab:: csharp while (file.GetPosition() < file.GetLength()) { // 读取数据 } .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_file_exists: .. rst-class:: classref-method :ref:`bool` **file_exists**\ (\ path\: :ref:`String`\ ) |static| :ref:`🔗` 如果文件存在于给定路径中,则返回 ``true``\ 。 \ **注意:**\ 许多资源类型是导入的(例如纹理或声音文件),它们的源资产不会包含在导出的游戏中,因为只使用导入的版本。有关考虑资源重新映射的替代方法,请参阅 :ref:`ResourceLoader.exists`\ 。 对于非静态的相对等效项,请使用 :ref:`DirAccess.file_exists`\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_flush: .. rst-class:: classref-method |void| **flush**\ (\ ) :ref:`🔗` 将文件的缓冲区写入磁盘。当关闭文件时,会自动进行刷新。这意味着你不需要在关闭文件前手动调用 :ref:`flush`\ 。尽管如此,即使项目崩溃而不是正常关闭,调用 :ref:`flush` 仍可用于确保数据安全。 \ **注意:**\ 只有在你真正需要的时候才调用 :ref:`flush`\ 。否则,它会因不断的磁盘写入而降低性能。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_8: .. rst-class:: classref-method :ref:`int` **get_8**\ (\ ) |const| :ref:`🔗` 以整数形式返回文件中接下来的 8 位。请参阅 :ref:`store_8`\ ,详细了解哪些值可以通过这种方式存储和检索。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_16: .. rst-class:: classref-method :ref:`int` **get_16**\ (\ ) |const| :ref:`🔗` 以整数形式返回文件中接下来的 16 位。请参阅 :ref:`store_16`\ ,以获取有关可以通过这种方式存储和检索哪些值的详细信息。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_32: .. rst-class:: classref-method :ref:`int` **get_32**\ (\ ) |const| :ref:`🔗` 以整数形式返回文件中接下来的 32 位。请参阅\ :ref:`store_32`\ ,以获取有关可以通过这种方式存储和检索哪些值的详细信息。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_64: .. rst-class:: classref-method :ref:`int` **get_64**\ (\ ) |const| :ref:`🔗` 以整数形式返回文件中接下来的 64 位。请参阅 :ref:`store_64`\ ,以获取有关可以通过这种方式存储和检索哪些值的详细信息。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_as_text: .. rst-class:: classref-method :ref:`String` **get_as_text**\ (\ skip_cr\: :ref:`bool` = false\ ) |const| :ref:`🔗` 以 :ref:`String` 形式返回整个文件。文本会按照 UTF-8 编码解析。 如果 ``skip_cr`` 为 ``true``\ ,解析 UTF-8 时会忽略回车符(\ ``\r``\ ,CR),因此只使用换行符(\ ``\n``\ ,LF)表示新一行的开始(Unix 规范)。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_buffer: .. rst-class:: classref-method :ref:`PackedByteArray` **get_buffer**\ (\ length\: :ref:`int`\ ) |const| :ref:`🔗` 将文件中接下来的 ``length`` 个字节作为 :ref:`PackedByteArray` 返回。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_csv_line: .. rst-class:: classref-method :ref:`PackedStringArray` **get_csv_line**\ (\ delim\: :ref:`String` = ","\ ) |const| :ref:`🔗` 以 CSV(逗号分隔值)格式返回文件的下一个值。可以传递不同的分隔符 ``delim``\ ,以使用默认 ``","``\ (逗号)以外的其他分隔符。这个分隔符必须为一个字符长,且不能是双引号。 文本被解析为 UTF-8 编码。如果文本值包含分隔符,则它们必须用双引号引起来。文本值中的双引号可以通过将它们的出现次数加倍来转义。 例如,以下 CSV 行是有效的,每行将被正确解析为两个字符串: .. code:: text Alice,"Hello, Bob!" Bob,Alice! What a surprise! Alice,"I thought you'd reply with ""Hello, world""." 请注意第二行如何省略封闭的引号,因为它不包含分隔符。然而它\ *可以*\ 很好地使用引号,它只是为了演示目的而没有编写。第三行必须为每个需要被解析为引号而不是文本值的末尾而使用 ``""``\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_double: .. rst-class:: classref-method :ref:`float` **get_double**\ (\ ) |const| :ref:`🔗` 将文件中接下来的 64 位作为浮点数返回。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_error: .. rst-class:: classref-method :ref:`Error` **get_error**\ (\ ) |const| :ref:`🔗` 返回试图执行操作时发生的最后一个错误。请与 :ref:`Error` 中的 ``ERR_FILE_*`` 常量比较。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_file_as_bytes: .. rst-class:: classref-method :ref:`PackedByteArray` **get_file_as_bytes**\ (\ path\: :ref:`String`\ ) |static| :ref:`🔗` 将整个 ``path`` 文件内容作为 :ref:`PackedByteArray` 返回,无需任何解码。 如果打开文件时发生错误,则返回空的 :ref:`PackedByteArray`\ 。你可以使用 :ref:`get_open_error` 来检查发生的错误。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_file_as_string: .. rst-class:: classref-method :ref:`String` **get_file_as_string**\ (\ path\: :ref:`String`\ ) |static| :ref:`🔗` 将整个 ``path`` 文件内容以 :ref:`String` 形式返回。文本被解释为 UTF-8 编码。 如果打开文件时发生错误,则返回空 :ref:`String`\ 。可以使用 :ref:`get_open_error` 来检查发生的错误。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_float: .. rst-class:: classref-method :ref:`float` **get_float**\ (\ ) |const| :ref:`🔗` 将文件中接下来的 32 位作为浮点数返回。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_hidden_attribute: .. rst-class:: classref-method :ref:`bool` **get_hidden_attribute**\ (\ file\: :ref:`String`\ ) |static| :ref:`🔗` 如果文件 ``hidden`` 属性已设置,则返回 ``true``\ 。 \ **注意:**\ 该方法在 iOS、BSD、macOS 和 Windows 上实现。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_length: .. rst-class:: classref-method :ref:`int` **get_length**\ (\ ) |const| :ref:`🔗` 返回该文件的大小,单位为字节。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_line: .. rst-class:: classref-method :ref:`String` **get_line**\ (\ ) |const| :ref:`🔗` 以 :ref:`String` 的形式返回文件中的下一行。返回的字符串不包含换行符(\ ``\n``\ )和回车符(\ ``\r``\ ),但是会包含开头和结尾的其他空白字符。 文本按照 UTF-8 编码规则进行解析。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_md5: .. rst-class:: classref-method :ref:`String` **get_md5**\ (\ path\: :ref:`String`\ ) |static| :ref:`🔗` 返回一个给定路径文件的 MD5 字符串,如果失败则返回一个空的 :ref:`String`\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_modified_time: .. rst-class:: classref-method :ref:`int` **get_modified_time**\ (\ file\: :ref:`String`\ ) |static| :ref:`🔗` 返回 ``file`` 的最后修改时间,使用 Unix 时间戳格式,出错时返回 ``0``\ 。这个 Unix 时间戳可以用 :ref:`Time` 单例转换为其他格式。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_open_error: .. rst-class:: classref-method :ref:`Error` **get_open_error**\ (\ ) |static| :ref:`🔗` 返回当前线程中最后一次 :ref:`open` 调用的结果。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_pascal_string: .. rst-class:: classref-method :ref:`String` **get_pascal_string**\ (\ ) :ref:`🔗` 返回文件中按照 Pascal 格式保存的 :ref:`String` 字符串。 将按照 UTF-8 编码解析文本。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_path: .. rst-class:: classref-method :ref:`String` **get_path**\ (\ ) |const| :ref:`🔗` 返回当前打开的文件的路径为\ :ref:`String`\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_path_absolute: .. rst-class:: classref-method :ref:`String` **get_path_absolute**\ (\ ) |const| :ref:`🔗` 返回当前打开的文件的绝对路径为\ :ref:`String`\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_position: .. rst-class:: classref-method :ref:`int` **get_position**\ (\ ) |const| :ref:`🔗` 返回文件光标的位置。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_read_only_attribute: .. rst-class:: classref-method :ref:`bool` **get_read_only_attribute**\ (\ file\: :ref:`String`\ ) |static| :ref:`🔗` 如果文件 ``read only`` 属性已设置,则返回 ``true``\ 。 \ **注意:**\ 此方法在 iOS、BSD、macOS 和 Windows 上实现。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_real: .. rst-class:: classref-method :ref:`float` **get_real**\ (\ ) |const| :ref:`🔗` 将文件中接下来的若干位以浮点数形式返回。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_sha256: .. rst-class:: classref-method :ref:`String` **get_sha256**\ (\ path\: :ref:`String`\ ) |static| :ref:`🔗` 返回一个表示给定路径下文件的 SHA-256 :ref:`String`\ ,失败时返回一个空的 :ref:`String`\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_unix_permissions: .. rst-class:: classref-method |bitfield|\[:ref:`UnixPermissionFlags`\] **get_unix_permissions**\ (\ file\: :ref:`String`\ ) |static| :ref:`🔗` 返回文件的 UNIX 权限。 \ **注意:**\ 该方法在 iOS、Linux/BSD 和 macOS 上实现。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_get_var: .. rst-class:: classref-method :ref:`Variant` **get_var**\ (\ allow_objects\: :ref:`bool` = false\ ) |const| :ref:`🔗` 返回文件中的下一个 :ref:`Variant` 值。如果 ``allow_objects`` 为 ``true``\ ,则允许解码对象。 在内部,这使用与 :ref:`@GlobalScope.bytes_to_var` 方法相同的解码机制。 \ **警告:**\ 反序列化得到的对象可能包含被执行的代码。如果序列化的对象来自不受信任的来源,请不要使用这个选项,以避免潜在的安全威胁,如远程代码执行。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_is_open: .. rst-class:: classref-method :ref:`bool` **is_open**\ (\ ) |const| :ref:`🔗` 如果文件当前被打开,返回 ``true``\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_open: .. rst-class:: classref-method :ref:`FileAccess` **open**\ (\ path\: :ref:`String`, flags\: :ref:`ModeFlags`\ ) |static| :ref:`🔗` 创建一个新的 **FileAccess** 对象,会根据标志来确定以写入还是读取模式打开文件。 如果打开文件失败,则返回 ``null`` 。你可以使用 :ref:`get_open_error` 来检查发生的错误。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_open_compressed: .. rst-class:: classref-method :ref:`FileAccess` **open_compressed**\ (\ path\: :ref:`String`, mode_flags\: :ref:`ModeFlags`, compression_mode\: :ref:`CompressionMode` = 0\ ) |static| :ref:`🔗` 创建一个新的 **FileAccess** 对象,并打开一个压缩文件以进行读取或写入。 \ **注意:**\ :ref:`open_compressed` 只能读取 Godot 保存的文件,不能读取第三方压缩格式。有关解决方法,请参阅 `GitHub 问题 #28999 `__\ 。 如果打开文件失败,则返回 ``null``\ 。可以使用 :ref:`get_open_error` 来检查发生的错误。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_open_encrypted: .. rst-class:: classref-method :ref:`FileAccess` **open_encrypted**\ (\ path\: :ref:`String`, mode_flags\: :ref:`ModeFlags`, key\: :ref:`PackedByteArray`\ ) |static| :ref:`🔗` 创建一个新的 **FileAccess** 对象,并以写入或读取模式打开一个加密文件。需要传入一个二进制密钥来加密/解密它。 \ **注意:**\ 提供的密钥必须是 32 字节长。 如果打开文件失败,则返回 ``null``\ 。可以使用 :ref:`get_open_error` 来检查发生的错误。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_open_encrypted_with_pass: .. rst-class:: classref-method :ref:`FileAccess` **open_encrypted_with_pass**\ (\ path\: :ref:`String`, mode_flags\: :ref:`ModeFlags`, pass\: :ref:`String`\ ) |static| :ref:`🔗` 创建一个新的 **FileAccess** 对象,以写或读的模式打开一个加密文件。你需要传递一个密码来加密/解密它。 如果打开文件失败,则返回 ``null`` 。你可以使用 :ref:`get_open_error` 来检查发生的错误。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_resize: .. rst-class:: classref-method :ref:`Error` **resize**\ (\ length\: :ref:`int`\ ) :ref:`🔗` 将文件大小修改为指定长度。文件必须使用允许写操作的模式打开。如果扩展了文件,则会追加 NUL 字符。如果截断了文件,则会丢弃从文件末尾到文件原长度之间的所有数据。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_seek: .. rst-class:: classref-method |void| **seek**\ (\ position\: :ref:`int`\ ) :ref:`🔗` 将文件的读/写光标改变到指定的位置(从文件开始的字节数)。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_seek_end: .. rst-class:: classref-method |void| **seek_end**\ (\ position\: :ref:`int` = 0\ ) :ref:`🔗` 将文件的读/写光标改变到指定的位置(从文件的末端算起,以字节为单位)。 \ **注意:**\ 这是一个偏移量,所以你应该使用负数,否则光标会在文件的末端。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_set_hidden_attribute: .. rst-class:: classref-method :ref:`Error` **set_hidden_attribute**\ (\ file\: :ref:`String`, hidden\: :ref:`bool`\ ) |static| :ref:`🔗` 设置文件 **hidden** 属性。 \ **注意:**\ 该方法在 iOS、BSD、macOS 和 Windows 上实现。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_set_read_only_attribute: .. rst-class:: classref-method :ref:`Error` **set_read_only_attribute**\ (\ file\: :ref:`String`, ro\: :ref:`bool`\ ) |static| :ref:`🔗` 设置文件 **read only** 属性。 \ **注意:**\ 该方法在 iOS、BSD、macOS 和 Windows 上实现。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_set_unix_permissions: .. rst-class:: classref-method :ref:`Error` **set_unix_permissions**\ (\ file\: :ref:`String`, permissions\: |bitfield|\[:ref:`UnixPermissionFlags`\]\ ) |static| :ref:`🔗` 设置文件的 UNIX 权限。 \ **注意:**\ 该方法在 iOS、Linux/BSD 和 macOS 上实现。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_8: .. rst-class:: classref-method |void| **store_8**\ (\ value\: :ref:`int`\ ) :ref:`🔗` 将一个整数以 8 位形式存储在文件中。 \ **注意:**\ ``value`` 应该位于 ``[0, 255]`` 的区间内。任何其他的值都会溢出并环绕。 要存储有符号的整数,请使用 :ref:`store_64`\ ,或者手动转换(见 :ref:`store_16` 的例子)。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_16: .. rst-class:: classref-method |void| **store_16**\ (\ value\: :ref:`int`\ ) :ref:`🔗` 将一个整数以 16 位形式存储在文件中。 \ **注意:**\ ``value`` 应该位于 ``[0, 2^16 - 1]`` 区间内。任何其他的值都会溢出并进行环绕。 要存储有符号的整数,请使用 :ref:`store_64` 或者从区间 ``[-2^15, 2^15 - 1]`` 中存储一个有符号的整数(即保留一位作为符号),在读取时手动计算其符号。例如: .. tabs:: .. code-tab:: gdscript const MAX_15B = 1 << 15 const MAX_16B = 1 << 16 func unsigned16_to_signed(unsigned): return (unsigned + MAX_15B) % MAX_16B - MAX_15B func _ready(): var f = FileAccess.open("user://file.dat", FileAccess.WRITE_READ) f.store_16(-42) # 发生环绕,存储 65494 (2^16 - 42)。 f.store_16(121) # 在范围内,存储 121。 f.seek(0) # 回到开头,读取存储的值。 var read1 = f.get_16() # 65494 var read2 = f.get_16() # 121 var converted1 = unsigned16_to_signed(read1) # -42 var converted2 = unsigned16_to_signed(read2) # 121 .. code-tab:: csharp public override void _Ready() { using var f = FileAccess.Open("user://file.dat", FileAccess.ModeFlags.WriteRead); f.Store16(unchecked((ushort)-42)); // 发生环绕,存储 65494 (2^16 - 42)。 f.Store16(121); // 在范围内,存储 121。 f.Seek(0); // 回到开头,读取存储的值。 ushort read1 = f.Get16(); // 65494 ushort read2 = f.Get16(); // 121 short converted1 = (short)read1; // -42 short converted2 = (short)read2; // 121 } .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_32: .. rst-class:: classref-method |void| **store_32**\ (\ value\: :ref:`int`\ ) :ref:`🔗` 将一个整数以 32 位形式存储在文件中。 \ **注意:**\ ``value`` 应该位于 ``[0, 2^32 - 1]`` 区间内。任何其他的值都会溢出并环绕。 要存储有符号的整数,请使用 :ref:`store_64`\ ,或者手动转换(见 :ref:`store_16` 的例子)。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_64: .. rst-class:: classref-method |void| **store_64**\ (\ value\: :ref:`int`\ ) :ref:`🔗` 将一个整数以 64 位形式存储在文件中。 \ **注意:**\ ``value`` 必须位于 ``[-2^63, 2^63 - 1]`` 的区间内(即有效的 :ref:`int` 值)。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_buffer: .. rst-class:: classref-method |void| **store_buffer**\ (\ buffer\: :ref:`PackedByteArray`\ ) :ref:`🔗` 在文件中存储给定的字节数组。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_csv_line: .. rst-class:: classref-method |void| **store_csv_line**\ (\ values\: :ref:`PackedStringArray`, delim\: :ref:`String` = ","\ ) :ref:`🔗` 将给定的 :ref:`PackedStringArray` 作为 CSV(逗号分隔值)格式的行存储在文件中。你可以传递不同的分隔符 ``delim`` 以使用默认 ``","``\ (逗号)以外的其他分隔符。此分隔符的长度必须为一个字符。 将使用 UTF-8 编码文本。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_double: .. rst-class:: classref-method |void| **store_double**\ (\ value\: :ref:`float`\ ) :ref:`🔗` 将一个浮点数以 64 位形式存储在文件中。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_float: .. rst-class:: classref-method |void| **store_float**\ (\ value\: :ref:`float`\ ) :ref:`🔗` 将一个浮点数以 32 位形式存储在文件中。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_line: .. rst-class:: classref-method |void| **store_line**\ (\ line\: :ref:`String`\ ) :ref:`🔗` 将 ``line`` 附加到文件末尾,并在后面加上一个换行符(\ ``\n``\ ),将使用 UTF-8 编码文本。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_pascal_string: .. rst-class:: classref-method |void| **store_pascal_string**\ (\ string\: :ref:`String`\ ) :ref:`🔗` 将给定的 :ref:`String` 以 Pascal 格式存储在文件中(即同时存储字符串的长度)。 将使用 UTF-8 编码文本。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_real: .. rst-class:: classref-method |void| **store_real**\ (\ value\: :ref:`float`\ ) :ref:`🔗` 将浮点数存储在文件中。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_string: .. rst-class:: classref-method |void| **store_string**\ (\ string\: :ref:`String`\ ) :ref:`🔗` 将 ``string`` 追加到文件中,不带换行,且将文本编码为 UTF-8。 \ **注意:**\ 本方法是用来写入文本文件的。字符串会被存储为 UTF-8 编码的缓冲区,不带字符串长度或末尾零,这意味着它不能被轻易加载回来。如果想在二进制文件中存储一个可检索的字符串,可以考虑改用 :ref:`store_pascal_string`\ 。对于从文本文件中检索字符串,可以使用 ``get_buffer(length).get_string_from_utf8()``\ (如果知道长度)或 :ref:`get_as_text`\ 。 .. rst-class:: classref-item-separator ---- .. _class_FileAccess_method_store_var: .. rst-class:: classref-method |void| **store_var**\ (\ value\: :ref:`Variant`, full_objects\: :ref:`bool` = false\ ) :ref:`🔗` 在文件中存储任何 Variant 值。如果 ``full_objects`` 为 ``true``\ ,则允许编码对象(并且可能包含代码)。 在内部,这使用与 :ref:`@GlobalScope.var_to_bytes` 方法相同的编码机制。 \ **注意:**\ 并非所有属性都包括在内。只有配置了 :ref:`@GlobalScope.PROPERTY_USAGE_STORAGE` 标志集的属性才会被序列化。可以通过覆盖类中的 :ref:`Object._get_property_list` 方法来向属性添加新的使用标志。还可以通过调用 :ref:`Object._get_property_list` 来检查属性使用的配置方式。有关可能的使用标志,请参阅 :ref:`PropertyUsageFlags`\ 。 .. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)` .. |const| replace:: :abbr:`const (本方法无副作用,不会修改该实例的任何成员变量。)` .. |vararg| replace:: :abbr:`vararg (本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。)` .. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)` .. |static| replace:: :abbr:`static (调用本方法无需实例,可直接使用类名进行调用。)` .. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效运算符。)` .. |bitfield| replace:: :abbr:`BitField (这个值是由下列位标志构成位掩码的整数。)` .. |void| replace:: :abbr:`void (无返回值。)`