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

瀏覽器相容性

另見