FileSystemDirectoryEntry.getFile() - Web APIs 编辑
Experimental
This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The FileSystemDirectoryEntry
interface's method getFile
()
returns a FileSystemFileEntry
object corresponding to a file contained somewhere within the directory subtree rooted at the directory on which it's called.
Syntax
FileSystemDirectoryEntry.getFile([path][, options][, successCallback][, errorCallback]);
Parameters
path
Optional- A
USVString
specifying the path, relative to the directory on which the method is called, describing which file's entry to return. 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
FileSystemFileEntry
has been created. The method receives a single parameter: theFileSystemFileEntry
object representing the file 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
Errors
If an error occurs and an errorCallback
was specified, it gets called with a single parameter: a FileError
object describing the error. The {domxref("FileError.code")}} specifies what type of error occurred, as follows:
FileError.NOT_FOUND_ERR
- The
create
option was not specified (or was specified asfalse
), and the file doesn't exist. FileError.PATH_EXISTS_ERR
- The
create
andexclusive
options were bothtrue
, indicating that the file should be created but must not already exist, but the file does in fact already exist. FileError.SECURITY_ERR
- The request to access the file was denied for security reasons.
FileError.TYPE_MISMATCH_ERR
- The path specified is not a file; it's probably a directory, 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 getFile()
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 isfalse
. The parent directory must already exist. exclusive
Optional- If
true
, and thecreate
option is alsotrue
, 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 isfalse
.
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 values | File/directory condition | Result | ||
---|---|---|---|---|
create | exclusive | |||
false | n/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. | |
false | n/a[1] | Path exists but doesn't match the desired type | The errorCallback is called with an appropriate error code (if the callback was provided). | |
true | false | Path exists | The 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. | |
true | false | Path doesn't exist | The file or directory is created, then a FileSystemFileEntry or a FileSystemDirectoryEntry is passed to the successCallback , as appropriate. | |
true | true | Path exists | The errorCallback is called with an appropriate error, such as FileError.PATH_EXISTS_ERR . | |
true | true | Path doesn't exist | The 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
Specification | Status | Comment |
---|---|---|
File and Directory Entries API The definition of 'getFile()' in that specification. | Draft | Initial specification. |
Browser compatibility
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论