DirectoryEntrySync

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

DirectoryEntrySync 接口表示文件系统中的一个目录。它包含用于在目录中创建、读取、查找和递归删除文件的方法。

警告:此接口已弃用,不再是标准规范的一部分。请勿再使用它。请改用 File and Directory Entries API

基本概念

如果您想创建子目录,您必须按顺序创建每个子目录。如果您尝试使用包含尚不存在的父目录的完整路径创建目录,您将收到错误。因此,请在创建父目录后通过递归添加新路径来创建层次结构。

示例

getFile() 方法返回一个 FileEntrySync,它表示文件系统中的一个文件。以下代码在根目录中创建一个名为 logs.txt 的空文件。

js
const fileEntry = fs.root.getFile("logs.txt", { create: true });

getDirectory() 方法返回一个 DirectoryEntrySync,它表示文件系统中的一个文件。以下代码在根目录中创建一个名为 project_dir 的新目录。

js
const dirEntry = fs.root.getDirectory("project_dir", { create: true });

方法概述

实例方法

createReader()

创建一个新的 DirectoryReaderSync 以从此目录读取条目。

语法

js
createReader()
参数

无。

返回值
DirectoryReaderSync

表示文件系统中的一个目录。

异常

此方法可能会引发具有以下代码的 DOMException

异常 描述
NOT_FOUND_ERR 目录不存在。
SECURITY_ERR 浏览器确定查找元数据不安全。[待办:解释原因]

getFile()

根据您设置 options 参数的方式,该方法会创建文件或查找现有文件。

语法

js
getFile(path)
getFile(path, options)
参数
路径

可以是绝对路径,也可以是从目录到要查找或创建的文件(或目录)的相对路径。您无法创建其直接父目录尚不存在的文件(或目录)。请先创建父目录。

options

(可选) 描述方法行为的对象字面量。如果文件不存在,则会创建它。

对象字面量 条件 结果
create: true
exclusive: true
路径已存在 将抛出错误。
create: true
exclusive: false
路径不存在且未发生其他错误 将创建一个文件。如果文件已存在,则不会抛出错误。
create: false
(exclusive 被忽略)
路径存在 将返回该文件。
create: false
(exclusive 被忽略)
路径不存在 将抛出错误。
create: false
(exclusive 被忽略)
路径存在,但它是目录 将抛出错误。
返回值
FileEntrySync

表示文件系统中的一个文件。

异常

此方法可能会引发具有以下代码的 DOMException

异常 描述
ENCODING_ERR 提供的路径无效。
NOT_FOUND_ERR 路径结构正确,但指向一个不存在的资源。
NO_MODIFICATION_ALLOWED_ERR 这是一个权限问题。目标目录或文件不可写入。
PATH_EXISTS_ERR 文件已存在。您无法创建具有相同路径的另一个文件。
QUOTA_EXCEEDED_ERROR 该操作将导致应用程序超出其存储配额。
SECURITY_ERR 应用程序无权访问路径所引用的元素。[待办:解释原因]
TYPE_MISMATCH_ERR 提供的路径存在,但它不是一个目录。

getDirectory()

创建或查找目录。此方法类似于将 DirectoryEntrySync 传入的 getFile()

语法

js
getDirectory(path)
getDirectory(path, options)
参数
路径

可以是绝对路径,也可以是从目录到要查找或创建的文件(或目录)的相对路径。您无法创建其直接父目录尚不存在的文件(或目录)。请先创建父目录。

options

(可选) 描述方法行为的对象字面量,如果文件不存在。

对象字面量 条件 结果
create: true
exclusive: true
路径已存在 将抛出错误。
create: true
exclusive: false
路径不存在且未发生其他错误 将创建一个目录。如果文件已存在,则不会抛出错误。
create: false
(exclusive 被忽略)
路径存在 将返回该目录。
create: false
(exclusive 被忽略)
路径不存在 将抛出错误。
create: false
(exclusive 被忽略)
路径存在,但它是目录 将抛出错误。
返回值
DirectoryEntrySync

表示文件系统中的一个目录。

异常

此方法可能会引发具有以下代码的 DOMException

异常 描述
ENCODING_ERR 提供的路径无效。
NOT_FOUND_ERR 路径结构正确,但指向一个不存在的资源。
NO_MODIFICATION_ALLOWED_ERR 这是一个权限问题。目标目录或文件不可写入。
PATH_EXISTS_ERR 文件已存在。您无法创建具有相同路径的另一个文件。
QUOTA_EXCEEDED_ERROR 该操作将导致应用程序超出其存储配额。
SECURITY_ERR 应用程序无权访问路径所引用的元素。[待办:解释原因]
TYPE_MISMATCH_ERR 提供的路径存在,但它不是一个目录。

removeRecursively()

删除目录及其所有内容。您无法删除文件系统的根目录。

如果您删除一个包含无法删除的文件,或者在删除过程中发生错误,则部分内容可能不会被删除。通过错误回调捕获这些情况并重试删除。

语法

js
removeRecursively()
参数

无。

返回值
undefined
异常

此方法可能会引发具有以下代码的 DOMException

异常 描述
NOT_FOUND_ERR 目标目录不存在。
INVALID_STATE_ERR 由于某种原因(非删除),此目录不再有效。

[待办:详细解释]

NO_MODIFICATION_ALLOWED_ERR 以下之一不可写入:目录本身、其父目录以及目录中的部分内容。
SECURITY_ERR 应用程序无权访问目标目录、其父目录或其中的部分内容。

规范

此功能不属于任何当前规范。它已不再是成为标准的轨道。请改用 File and Directory Entries API

浏览器兼容性

另见