FileSystemDirectoryEntry: getDirectory() 方法
FileSystemDirectoryEntry 介面的 getDirectory() 方法會返回一個 FileSystemDirectoryEntry 物件,該物件對應於呼叫它的目錄的目錄樹中某個位置的目錄。
語法
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。如果create為false,則忽略此引數。
下表描述了這些標誌的每種可能組合的結果,具體取決於目標目錄路徑是否已存在。
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)。
異常
NotFoundErrorDOMException-
如果未指定
create選項(或指定為false),並且目錄不存在,則會丟擲此錯誤。 SecurityErrorDOMException-
出於安全原因,訪問目錄的請求被拒絕時會丟擲此錯誤。
TypeMismatchErrorDOMException-
指定的路徑不是目錄時會丟擲此錯誤;它可能是檔案,也可能是不受支援的檔案描述符(如管道);這在一定程度上取決於使用者代理。
示例
在此示例中,提供了一個函式,其任務是在使用者應用程式資料目錄中查詢包含指定語言使用者字典的 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 物件。
規範
| 規範 |
|---|
| File and Directory Entries API # dom-filesystemdirectoryentry-getdirectory |
瀏覽器相容性
載入中…