FileSystemDirectoryEntry

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

The FileSystemDirectoryEntry interface of the File and Directory Entries API represents a directory in a file system. It provides methods which make it possible to access and manipulate the files in a directory, as well as to access the entries within the directory.

Basic concepts

You can create a new directory by calling getDirectory(). If you want to create subdirectories, create each child directory in sequence. If you try creating a directory using a full path that includes parent directories that do not exist yet, an error is returned. So create the hierarchy by recursively adding a new path after creating the parent directory.

Example

In the following code snippet, we create a directory called "Documents."

// Taking care of the browser-specific prefixes.
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.directoryEntry = window.directoryEntry || window.webkitDirectoryEntry;

...

function onFs(fs){
  fs.root.getDirectory('Documents', {create:true}, function(directoryEntry){
    //directoryEntry.isFile === false
    //directoryEntry.isDirectory === true
    //directoryEntry.name === 'Documents'
    //directoryEntry.fullPath === '/Documents'

    }, onError);

  }

// Opening a file system with temporary storage
window.requestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, onFs, onError);

Properties

This interface has no properties of its own, but inherits properties from its parent interface, FileSystemEntry.

Methods

This interface inherits methods from its parent interface, FileSystemEntry.

createReader()
Creates a FileSystemDirectoryReader object which can be used to read the entries in this directory.
getDirectory()
Returns a FileSystemDirectoryEntry object representing a directory located at a given path, relative to the directory on which the method is called.
getFile()
Returns a FileSystemFileEntry object representing a file located within the directory's hierarchy, given a path relative to the directory on which the method is called.

Obsolete methods

removeRecursively()
Deletes a directory and all of its contents, including the contents of subdirectories. This has been removed from the spec.

Specifications

Specification Status Comment
File and Directory Entries API
The definition of 'FileSystemDirectoryEntry' in that specification.
Draft

Browser compatibility

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
FileSystemDirectoryEntry
Experimental
Chrome Full support 8
Alternate Name
Full support 8
Alternate Name
Alternate Name Uses the non-standard name: DirectoryEntry
Edge Full support 79
Prefixed
Full support 79
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Firefox Full support 50IE No support NoOpera Full support Yes
Prefixed
Full support Yes
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari Full support 11.1WebView Android Full support ≤37
Alternate Name
Full support ≤37
Alternate Name
Alternate Name Uses the non-standard name: DirectoryEntry
Chrome Android Full support 18
Alternate Name
Full support 18
Alternate Name
Alternate Name Uses the non-standard name: DirectoryEntry
Firefox Android Full support 50Opera Android No support NoSafari iOS Full support 11.3Samsung Internet Android Full support Yes
Prefixed
Full support Yes
Prefixed
Prefixed Implemented with the vendor prefix: webkit
createReader
Experimental
Chrome Full support 13Edge Full support 79Firefox Full support 50IE No support NoOpera No support NoSafari Full support 11.1WebView Android Full support ≤37Chrome Android Full support 18Firefox Android Full support 50Opera Android No support NoSafari iOS Full support 11.3Samsung Internet Android Full support Yes
getDirectory
Experimental
Chrome Full support 8Edge Full support 79Firefox Full support 50
Notes
Full support 50
Notes
Notes In Firefox, the errorCallback's input parameter is a DOMException rather than a FileError object.
IE No support NoOpera No support NoSafari Full support 11.1WebView Android Full support ≤37Chrome Android Full support 18Firefox Android Full support 50
Notes
Full support 50
Notes
Notes In Firefox, the errorCallback's input parameter is a DOMException rather than a FileError object.
Opera Android No support NoSafari iOS Full support 11.3Samsung Internet Android Full support Yes
getFile
Experimental
Chrome Full support 8Edge Full support 79Firefox Full support 50
Notes
Full support 50
Notes
Notes In Firefox, the errorCallback's input parameter is a DOMException rather than a FileError object.
IE No support NoOpera No support NoSafari Full support 11.1WebView Android Full support ≤37Chrome Android Full support 18Firefox Android Full support 50
Notes
Full support 50
Notes
Notes In Firefox, the errorCallback's input parameter is a DOMException rather than a FileError object.
Opera Android No support NoSafari iOS Full support 11.3Samsung Internet Android Full support Yes
removeRecursively
DeprecatedNon-standard
Chrome Full support 8Edge Full support 79Firefox No support 50 — 52
Notes
No support 50 — 52
Notes
Notes While the removeRecursively() method existed, it immediately called the error callback with NS_ERROR_DOM_SECURITY_ERR.
IE No support NoOpera No support NoSafari No support NoWebView Android Full support ≤37Chrome Android Full support 18Firefox Android No support 50 — 52
Notes
No support 50 — 52
Notes
Notes While the removeRecursively() method existed, it immediately called the error callback with NS_ERROR_DOM_SECURITY_ERR.
Opera Android No support NoSafari iOS No support NoSamsung Internet Android Full support Yes

Legend

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.
See implementation notes.
See implementation notes.
Uses a non-standard name.
Uses a non-standard name.
Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.

See also