FileSystemDirectoryEntry: getDirectory() 方法

FileSystemDirectoryEntry 介面的 getDirectory() 方法會返回一個 FileSystemDirectoryEntry 物件,該物件對應於呼叫它的目錄的目錄樹中某個位置的目錄。

語法

js
getDirectory()
getDirectory(path)
getDirectory(path, options)
getDirectory(path, options, successCallback)
getDirectory(path, options, successCallback, errorCallback)

引數

path 可選

一個字串,表示一個絕對路徑或相對於呼叫方法的目錄的路徑,描述要返回哪個目錄條目。出於安全原因,絕對路徑可能無法使用。

options 可選

一個物件,允許您指定條目是否應在缺失時建立,以及檔案已存在時是否為錯誤。這些選項在 Web 上下文中目前沒有用。有關更多詳細資訊,請參閱選項引數部分。

successCallback 可選

在建立 FileSystemDirectoryEntry 後要呼叫的方法。該方法接收一個引數:代表相關目錄的 FileSystemDirectoryEntry 物件。

errorCallback 可選

發生錯誤時要呼叫的方法。接收一個 DomException 物件作為其唯一的輸入引數,該物件描述了發生的錯誤。

options 引數

options 引數物件接受以下引數:

create 可選

如果此屬性為 true,並且請求的目錄不存在,則使用者代理應建立它。預設值為 false。父目錄必須已存在。

exclusive 可選

如果為 true,並且 create 選項也為 true,則目錄在呼叫時必須不存在。相反,它必須能夠在呼叫時被新建立。預設值為 false。如果 createfalse,則忽略此引數。

下表描述了這些標誌的每種可能組合的結果,具體取決於目標目錄路徑是否已存在。

create 選項 exclusive 選項 路徑條件 結果
false 已忽略 路徑存在且為目錄 使用 FileSystemDirectoryEntry 呼叫 successCallback
false 已忽略 路徑存在但為檔案 呼叫 errorCallback(如果提供了回撥函式),並附帶適當的錯誤程式碼。
true false 路徑存在 刪除現有目錄並用新目錄替換,然後使用 FileSystemDirectoryEntry 呼叫 successCallback
true false 路徑不存在 建立目錄,然後將 FileSystemDirectoryEntry 傳遞給 successCallback
true true 路徑存在 呼叫 errorCallback,並附帶適當的錯誤,例如 DOMException.PATH_EXISTS_ERR
true true 路徑不存在 建立目錄,然後將 FileSystemDirectoryEntry 傳遞給 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-getdirectory

瀏覽器相容性

另見