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 路径存在 现有的文件将被删除并替换为新文件,然后 successCallback 使用 FileSystemFileEntry 被调用。
true false 路径不存在 文件被创建,然后 FileSystemFileEntry 被传递给 successCallback
true true 路径存在 errorCallback 使用适当的错误被调用,例如 DOMException.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 对象。

规范

规范
File and Directory Entries API
# dom-filesystemdirectoryentry-getfile

浏览器兼容性

另见