DirectoryEntrySync

非标准:此功能是非标准的,并且不在标准化轨道上。不要在面向 Web 的生产环境中使用它:它不会对所有用户起作用。实现之间也可能存在很大的不兼容性,并且行为将来可能会发生变化。

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

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

警告:此接口已弃用,并且不再位于标准轨道上。请勿再使用它。 使用文件和目录条目 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)
参数
path

从目录到要查找或创建的文件的绝对路径或相对路径。你不能创建其直接父目录不存在的文件。首先创建父目录。

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()

创建或查找目录。该方法类似于 getFile(),只是传递了 DirectoryEntrySync。

语法

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

从目录到要查找或创建的文件的绝对路径或相对路径。你不能创建其直接父目录不存在的文件。首先创建父目录。

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 应用程序无权访问目标目录、其父目录或部分内容。

规范

此功能不是任何当前规范的一部分。它不再在成为标准的轨道上。使用文件和目录条目 API 替代。

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅