FileSystemDirectoryEntry:getFile() 方法

FileSystemDirectoryEntry 接口的方法 getFile() 返回一个 FileSystemFileEntry 对象,该对象对应于包含在调用该方法的目录所根目录的目录子树中的某个文件。

语法

js
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。如果 createfalse,则忽略此参数。

下表根据目标文件路径是否已存在,描述了这些标志每种可能组合的结果。

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 文件,然后加载该词典。

js
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 的浏览器中加载。

另请参阅