FileSystemDirectoryEntry.getDirectory() - Web APIs 编辑

Experimental

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The FileSystemDirectoryEntry interface's method getDirectory() returns a FileSystemDirectoryEntry object corresponding to a directory contained somewhere within the directory subtree rooted at the directory on which it's called.

Syntax

FileSystemDirectoryEntry.getDirectory([path][, options][, successCallback][, errorCallback]);

Parameters

path Optional
A USVString representing an absolute path or a path relative to the directory on which the method is called, describing which directory entry to return. Absolute paths may not be able to be used, for security reasons.
options Optional
An object based on the FileSystemFlags dictionary, which allows you to specify whether or not to create the entry if it's missing and if it's an error if the file already exists. These options are currently not useful in Web contexts.
successCallback Optional
A method to be called once the FileSystemDirectoryEntry has been created. The method receives a single parameter: the FileSystemDirectoryEntry object representing the directory in question.
errorCallback Optional
A method to be called if an error occurs. Receives as its sole input parameter a FileError object describing the error which occurred.

Return value

undefined.

Errors

If an error occurs and an errorCallback was specified, it gets called with a single parameter: a FileError object describing the error. The FileError.code specifies what type of error occurred, as follows:

FileError.NOT_FOUND_ERR
The create option was not specified (or was specified as false), and the directory doesn't exist.
FileError.PATH_EXISTS_ERR
The create and exclusive options were both true, indicating that the directory should be created but must not already exist, but the directory does in fact already exist.
FileError.SECURITY_ERR
The request to access the directory was denied for security reasons.
FileError.TYPE_MISMATCH_ERR
The path specified is not a directory; it's probably a file, but might be an unsupported file descriptor such as a pipe; this depends on the user agent to some extent.

FileSystemFlags

The options parameter is an object which is based on the FileSystemFlags dictionary; it provides flags which make it possible to adjust the behavior of the getDirectory() method.

create Optional
If this property is true, and the requested file or directory doesn't exist, the user agent should create it. The default is false. The parent directory must already exist.
exclusive Optional
If true, and the create option is also true, the file must not exist prior to issuing the call. Instead, it must be possible for it to be created newly at call time. The default is false.

Values and results

The table below describes the result of each possible combination of these flags depending on whether or not the target file or directory path already exists.

Option valuesFile/directory conditionResult
createexclusive
falsen/a[1]Path exists and matches the desired type (depending on whether the function called is getFile() or getDirectory()The successCallback is called with a FileSystemFileEntry if getFile() was called or a FileSystemDirectoryEntry if getDirectory() was called.
falsen/a[1]Path exists but doesn't match the desired typeThe errorCallback is called with an appropriate error code (if the callback was provided).
truefalsePath existsThe existing file or directory is removed and replaced with a new one, then the successCallback is called with a FileSystemFileEntry or a FileSystemDirectoryEntry, as appropriate.
truefalsePath doesn't existThe file or directory is created, then a FileSystemFileEntry or a FileSystemDirectoryEntry is passed to the successCallback, as appropriate.
truetruePath existsThe errorCallback is called with an appropriate error, such as FileError.PATH_EXISTS_ERR.
truetruePath doesn't existThe file or directory is created, then a FileSystemFileEntry or a FileSystemDirectoryEntry is passed to the successCallback, as appropriate.

[1] When create is false, the value of exclusive is irrelevant and ignored.

Example

In this example, a function is presented whose job it is to locate within a user's app data directory a JSON file containing a user dictionary for a specified language, then load that dictionary.

let dictionary = null;

function loadDictionaryForLanguage(appDataDirEntry, lang) {
  dictionary = null;

  appDataDirEntry.getDirectory("Dictionaries", {}, function(dirEntry) {
    dirEntry.getFile(lang + "-dict.json", {}, function(fileEntry) {
      fileEntry.file(function(dictFile)) {
        let reader = new FileReader();

        reader.addEventListener("loadend", function() {
          dictionary = JSON.parse(reader.result);
        });

        reader.readAsText(dictFile);
      });
    });
  });
}

The loadDictionaryForLanguage() function starts by using getDirectory() to obtain the FileSystemDirectoryEntry object representing a subfolder named "Dictionaries" located inside the specified app data directory. The success callback for this takes the resulting directory entry object and calls getFile() to get a FileSystemFileEntry object representing the dictionary file; the success callback for this, in turn, creates a new FileReader and uses it to load the contents of the file. When that is loaded successfully (as indicated by the loadend event being fired), the loaded text is passed into JSON.parse() to be reconstituted into a JavaScript object.

Specifications

SpecificationStatusComment
File and Directory Entries API
The definition of 'getDirectory()' in that specification.
DraftInitial specification.

Browser compatibility

BCD tables only load in the browser

See also

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:109 次

字数:11754

最后编辑:7 年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文