FileSystemDirectoryEntry:getFile() 方法
FileSystemDirectoryEntry 接口的 getFile() 方法会返回一个 FileSystemFileEntry 对象,该对象对应于在调用它的目录所根目录的目录子树中找到的一个文件。
语法
getFile()
getFile(path)
getFile(path, options)
getFile(path, options, successCallback)
getFile(path, options, successCallback, errorCallback)
参数
path可选-
一个指定路径的字符串,相对于调用该方法的目录,描述了要返回哪个文件的条目。
options可选-
一个允许您指定条目是否缺失时应该创建,以及如果文件已存在时是否算作错误的对象。这些选项在 Web 上下文中目前没有用。有关更多详细信息,请参阅 options 参数 部分。
successCallback可选-
一旦
FileSystemFileEntry创建完成,就会调用的方法。该方法接收一个参数:代表所讨论文件的FileSystemFileEntry对象。 errorCallback可选-
发生错误时将调用的方法。它接收一个
DOMException对象作为其唯一的输入参数,该对象描述了发生的错误。
options 参数
options 参数对象接受以下参数
create可选-
如果此属性为
true,并且请求的文件不存在,则用户代理应该创建它。默认值为false。父目录必须已存在。 exclusive可选-
如果
true,并且create选项也为true,则文件在发出调用之前必须不存在。相反,在调用时必须能够新创建它。默认值为false。如果create为false,则忽略此参数。
下表描述了这些标志的每种可能组合的结果,具体取决于目标文件路径是否存在。
create 选项 |
exclusive 选项 |
路径条件 | 结果 |
|---|---|---|---|
false |
忽略 | 路径存在且为文件 | successCallback 使用 FileSystemFileEntry 被调用。 |
false |
忽略 | 路径存在但为目录 | errorCallback 使用适当的错误代码被调用(如果提供了回调)。 |
true |
false |
路径存在 | 现有的文件将被删除并替换为新文件,然后 successCallback 使用 FileSystemFileEntry 被调用。 |
true |
false |
路径不存在 | 文件被创建,然后 FileSystemFileEntry 被传递给 successCallback。 |
true |
true |
路径存在 | errorCallback 使用适当的错误被调用,例如 DOMException.PATH_EXISTS_ERR。 |
true |
true |
路径不存在 | 文件被创建,然后 FileSystemFileEntry 被传递给 successCallback。 |
返回值
无(undefined)。
异常
NotFoundErrorDOMException-
如果未指定
create选项(或指定为false),并且文件不存在,则会抛出此错误。 SecurityErrorDOMException-
如果由于安全原因拒绝访问文件的请求,则会抛出此错误。
TypeMismatchErrorDOMException-
如果指定的路径不是文件,则会抛出此错误;它很可能是一个目录,但也可能是不受支持的文件描述符(例如管道);这在一定程度上取决于用户代理。
示例
在此示例中,提供了一个函数,其任务是在用户应用程序数据目录中查找包含指定语言用户字典的 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-getfile |
浏览器兼容性
加载中…