FileSystemDirectoryEntry: getDirectory() 方法
FileSystemDirectoryEntry
接口的方法 getDirectory()
返回一个 FileSystemDirectoryEntry
对象,该对象对应于包含在调用其方法的目录的根目录子树中的某个位置的目录。
语法
getDirectory()
getDirectory(path)
getDirectory(path, options)
getDirectory(path, options, successCallback)
getDirectory(path, options, successCallback, errorCallback)
参数
path
可选-
一个字符串,表示相对于调用该方法的目录的绝对路径或相对路径,描述要返回哪个目录条目。出于安全原因,可能无法使用绝对路径。
options
可选-
一个对象,允许你指定如果条目丢失是否创建条目,以及如果文件已存在是否为错误。这些选项目前在 Web 上下文中没有用。有关更多详细信息,请参阅 options 参数 部分。
successCallback
可选-
在
FileSystemDirectoryEntry
创建后要调用的方法。该方法接收一个参数:表示该目录的FileSystemDirectoryEntry
对象。 errorCallback
可选-
如果发生错误要调用的方法。接收其唯一的输入参数
DomException
对象,描述发生的错误。
options
参数
options
参数对象接受以下参数
create
可选-
如果此属性为
true
,并且请求的目录不存在,则用户代理应该创建它。默认值为false
。父目录必须已经存在。 exclusive
可选-
如果为
true
,并且create
选项也为true
,则目录在发出调用之前必须不存在。相反,它必须能够在调用时新建创建。默认值为false
。如果create
为false
,则忽略此参数。
下表描述了根据目标目录路径是否存在,这些标志的每种可能组合的结果。
create 选项 |
exclusive 选项 |
路径条件 | 结果 |
---|---|---|---|
false |
忽略 | 路径存在且为目录 | successCallback 被调用,并带有 FileSystemDirectoryEntry 。 |
false |
忽略 | 路径存在但为文件 | errorCallback 被调用,并带有适当的错误代码(如果提供了回调)。 |
true |
false |
路径存在 | 现有目录被删除并替换为新的目录,然后 successCallback 被调用,并带有 FileSystemDirectoryEntry 。 |
true |
false |
路径不存在 | 创建目录,然后将 FileSystemDirectoryEntry 传递给 successCallback 。 |
true |
true |
路径存在 | errorCallback 被调用,并带有适当的错误,例如 FileError.PATH_EXISTS_ERR 。 |
true |
true |
路径不存在 | 创建目录,然后将 FileSystemDirectoryEntry 传递给 successCallback 。 |
返回值
无 (undefined
).
异常
NotFoundError
DOMException
-
如果未指定
create
选项(或指定为false
)并且目录不存在,则抛出该异常。 SecurityError
DOMException
-
如果出于安全原因拒绝访问目录的请求,则抛出该异常。
TypeMismatchError
DOMException
-
如果指定的路径不是目录,则抛出该异常;它可能是文件,但也可能是不受支持的文件描述符,例如管道;这在一定程度上取决于用户代理。
示例
在此示例中,提供了一个函数,其工作是定位用户应用程序数据目录中的 JSON 文件,该文件包含指定语言的用户词典,然后加载该词典。
let dictionary = null;
function loadDictionaryForLanguage(appDataDirEntry, lang) {
dictionary = null;
appDataDirEntry.getDirectory("Dictionaries", {}, (dirEntry) => {
dirEntry.getFile(`${lang}-dict.json`, {}, (fileEntry) => {
fileEntry.file((dictFile) => {
let reader = new FileReader();
reader.addEventListener("loadend", () => {
dictionary = JSON.parse(reader.result);
});
reader.readAsText(dictFile);
});
});
});
}
loadDictionaryForLanguage()
函数首先使用 getDirectory()
获取 FileSystemDirectoryEntry
对象,该对象表示位于指定应用程序数据目录中的名为“Dictionaries”的子文件夹。此项操作的成功回调将接收生成的目录条目对象,并调用 getFile()
以获取 FileSystemFileEntry
对象,该对象表示词典文件;反过来,此操作的成功回调会创建一个新的 FileReader
,并使用它来加载文件的内容。当成功加载(如通过触发 loadend
事件指示)时,加载的文本将被传递到 JSON.parse()
中,以便重新构成一个 JavaScript 对象。
规范
规范 |
---|
文件和目录条目 API # dom-filesystemdirectoryentry-getdirectory |
浏览器兼容性
BCD 表仅在浏览器中加载