FileSystemDirectoryEntry: getDirectory() 方法
FileSystemDirectoryEntry
接口的 getDirectory()
方法会返回一个 FileSystemDirectoryEntry
对象,该对象对应于调用它的目录的目录树中某个位置的目录。
语法
getDirectory()
getDirectory(path)
getDirectory(path, options)
getDirectory(path, options, successCallback)
getDirectory(path, options, successCallback, errorCallback)
参数
path
可选-
一个字符串,表示一个绝对路径或相对于调用方法的目录的路径,描述要返回哪个目录条目。出于安全原因,绝对路径可能无法使用。
options
可选-
一个对象,允许您指定条目是否应在缺失时创建,以及文件已存在时是否为错误。这些选项在 Web 上下文中目前没有用。有关更多详细信息,请参阅选项参数部分。
successCallback
可选-
在创建
FileSystemDirectoryEntry
后要调用的方法。该方法接收一个参数:代表相关目录的FileSystemDirectoryEntry
对象。 errorCallback
可选-
发生错误时要调用的方法。接收一个
DomException
对象作为其唯一的输入参数,该对象描述了发生的错误。
options
参数
options
参数对象接受以下参数:
create
可选-
如果此属性为
true
,并且请求的目录不存在,则用户代理应创建它。默认值为false
。父目录必须已存在。 exclusive
可选-
如果为
true
,并且create
选项也为true
,则目录在调用时必须不存在。相反,它必须能够在调用时被新创建。默认值为false
。如果create
为false
,则忽略此参数。
下表描述了这些标志的每种可能组合的结果,具体取决于目标目录路径是否已存在。
create 选项 |
exclusive 选项 |
路径条件 | 结果 |
---|---|---|---|
false |
已忽略 | 路径存在且为目录 | 使用 FileSystemDirectoryEntry 调用 successCallback 。 |
false |
已忽略 | 路径存在但为文件 | 调用 errorCallback (如果提供了回调函数),并附带适当的错误代码。 |
true |
false |
路径存在 | 删除现有目录并用新目录替换,然后使用 FileSystemDirectoryEntry 调用 successCallback 。 |
true |
false |
路径不存在 | 创建目录,然后将 FileSystemDirectoryEntry 传递给 successCallback 。 |
true |
true |
路径存在 | 调用 errorCallback ,并附带适当的错误,例如 DOMException.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()
获取代表位于指定应用程序数据目录内的名为“Dictionaries”的子文件夹的 FileSystemDirectoryEntry
对象。此函数的成功回调接收由此产生的目录条目对象,并调用 getFile()
来获取代表字典文件的 FileSystemFileEntry
对象;此函数的成功回调接着会创建一个新的 FileReader
并使用它来加载文件的内容。当文件加载成功后(由 loadend
事件触发指示),加载的文本会传递给 JSON.parse()
,以将其重构为 JavaScript 对象。
规范
规范 |
---|
File and Directory Entries API # dom-filesystemdirectoryentry-getdirectory |
浏览器兼容性
加载中…