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 |
路径存在 | 现有文件将被删除并替换为新文件,然后使用 FileSystemFileEntry 调用 successCallback 。 |
true |
false |
路径不存在 | 创建文件,然后将 FileSystemFileEntry 传递给 successCallback 。 |
true |
true |
路径存在 | errorCallback 将使用相应的错误调用,例如 FileError.PATH_EXISTS_ERR 。 |
true |
true |
路径不存在 | 创建文件,然后将 FileSystemFileEntry 传递给 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 对象。
规范
规范 |
---|
文件和目录条目 API # dom-filesystemdirectoryentry-getfile |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。