DirectoryEntry
This object represents a directory on a file system, as defined by the W3C Directories and Systems specification.
Properties
- isFile: Always false. (boolean)
- isDirectory: Always true. (boolean)
- name: The name of the
DirectoryEntry
, excluding the path leading to it. (DOMString) - fullPath: The full absolute path from the root to the
DirectoryEntry
. (DOMString)
NOTE: The following attribute is defined by the W3C specification, but is not supported:
- filesystem: The file system on which the
DirectoryEntry
resides. (FileSystem)
Methods
The following methods can be invoked on a DirectoryEntry
object:
- getMetadata: Look up metadata about a directory.
- setMetadata: Set metadata on a directory.
- moveTo: Move a directory to a different location on the file system.
- copyTo: Copy a directory to a different location on the file system.
- toURL: Return a URL to help locate a directory.
- remove: Delete a directory. The directory must be empty.
- getParent: Look up the parent directory.
- createReader: Create a new
[DirectoryReader](../directoryreader/directoryreader.html)
that can read entries from a directory. - getDirectory: Create or look up a directory.
- getFile: Create or look up a file.
- removeRecursively: Delete a directory and all of its contents.
Supported Platforms
- Android
- BlackBerry WebWorks (OS 5.0 and higher)
- iOS
- Windows Phone 7 and 8
- Windows 8
getMetadata
Look up metadata about a directory.
Parameters:
- successCallback: A callback function to execute with a
[Metadata](../metadata/metadata.html)
object. (Function) - errorCallback: A callback function to execute if an error occurs when retrieving the
[Metadata](../metadata/metadata.html)
. Invoked with a[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function success(metadata) {
console.log("Last Modified: " + metadata.modificationTime);
}
function fail(error) {
alert(error.code);
}
// Request the metadata object for this entry
entry.getMetadata(success, fail);
setMetadata
Set metadata on a directory. Currently works only on iOS. - this will set the extended attributes of a directory.
Parameters:
- successCallback: A callback that executes when the metadata is successfully set. (Function)
- errorCallback: A callback that executes when the metadata fails to be set. (Function)
- metadataObject: An object that contains the metadata's keys and values. (Object)
Quick Example
function success() {
console.log("The metadata was successfully set.");
}
function fail() {
alert("There was an error in setting the metadata");
}
// Set the metadata
entry.setMetadata(success, fail, { "com.apple.MobileBackup": 1});
iOS Quirk
- Only the
com.apple.MobileBackup
extended attribute is supported. Set the value to1
to prevent the directory from being backed up to iCloud. Set the value to0
to re-enable the directory to be backed up to iCloud.
Quick Example
function setFolderMetadata(localFileSystem, subFolder, metadataKey, metadataValue)
{
var onSetMetadataWin = function() {
console.log("success setting metadata")
}
var onSetMetadataFail = function() {
console.log("error setting metadata")
}
var onGetDirectoryWin = function(parent) {
var data = {};
data[metadataKey] = metadataValue;
parent.setMetadata(onSetMetadataWin, onSetMetadataFail, data);
}
var onGetDirectoryFail = function() {
console.log("error getting dir")
}
var onFSWin = function(fileSystem) {
fileSystem.root.getDirectory(subFolder, {create: true, exclusive: false}, onGetDirectoryWin, onGetDirectoryFail);
}
var onFSFail = function(evt) {
console.log(evt.target.error.code);
}
window.requestFileSystem(localFileSystem, 0, onFSWin, onFSFail);
}
setFolderMetadata(LocalFileSystem.PERSISTENT, "Backups", "com.apple.MobileBackup", 1);
moveTo
Move a directory to a different location on the file system. An error results if the app attempts to:
- move a directory inside itself or to any child at any depth.
- move a directory into its parent if a name different from its current directory is not provided.
- move a directory to a path occupied by a file.
- move a directory to a path occupied by a directory that is not empty.
Moving a directory on top of an existing empty directory attempts to delete and replace that directory.
Parameters:
- parent: The parent directory to which to move the directory. (DirectoryEntry)
- newName: The new name of the directory. Defaults to the current name if unspecified. (DOMString)
- successCallback: A callback that executes with the
DirectoryEntry
object for the new directory. (Function) - errorCallback: A callback that executes if an error occurs when attempting to move the directory. Invoked with a
[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function success(entry) {
console.log("New Path: " + entry.fullPath);
}
function fail(error) {
alert(error.code);
}
function moveDir(entry) {
var parent = document.getElementById('parent').value,
parentName = parent.substring(parent.lastIndexOf('/')+1),
newName = document.getElementById('newName').value,
parentEntry = new DirectoryEntry(parentName, parent);
// move the directory to a new directory and rename it
entry.moveTo(parentEntry, newName, success, fail);
}
copyTo
Copy a directory to a different location on the file system. An error results if the app attempts to:
- copy a directory inside itself at any depth.
- copy a directory into its parent if a name different from its current directory is not provided.
Directory copies are always recursive, and copy all contents of the directory.
Parameters:
- parent: The parent directory to which to copy the directory. (DirectoryEntry)
- newName: The new name of the directory. Defaults to the current name if unspecified. (DOMString)
- successCallback: A callback that executes with the
DirectoryEntry
object for the new directory. (Function) - errorCallback: A callback that executes if an error occurs when attempting to copy the underlying directory. Invoked with a
[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function win(entry) {
console.log("New Path: " + entry.fullPath);
}
function fail(error) {
alert(error.code);
}
function copyDir(entry) {
var parent = document.getElementById('parent').value,
parentName = parent.substring(parent.lastIndexOf('/')+1),
newName = document.getElementById('newName').value,
parentEntry = new DirectoryEntry(parentName, parent);
// copy the directory to a new directory and rename it
entry.copyTo(parentEntry, newName, success, fail);
}
toURL
Returns a URL that can be used to locate the directory.
Quick Example
// Get the URL for this directory
var dirURL = entry.toURL();
console.log(dirURL);
remove
Deletes a directory. An error results if the app attempts to:
- delete a directory that is not empty.
- delete the root directory of a filesystem.
Parameters:
- successCallback: A callback that executes after the directory is deleted. Invoked with no parameters. (Function)
- errorCallback: A callback that executes if an error occurs when attempting to delete the directory. Invoked with a
[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function success(entry) {
console.log("Removal succeeded");
}
function fail(error) {
alert('Error removing directory: ' + error.code);
}
// remove this directory
entry.remove(success, fail);
getParent
Look up the parent DirectoryEntry
containing the directory.
Parameters:
- successCallback: A callback that is passed the directory's parent
DirectoryEntry
. (Function) - errorCallback: A callback that executes if an error occurs when attempting to retrieve the parent
DirectoryEntry
. Invoked with a[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function success(parent) {
console.log("Parent Name: " + parent.name);
}
function fail(error) {
alert('Failed to get parent directory: ' + error.code);
}
// Get the parent DirectoryEntry
entry.getParent(success, fail);
createReader
Creates a new DirectoryReader to read entries in a directory.
Quick Example
// create a directory reader
var directoryReader = entry.createReader();
getDirectory
Creates or looks up an existing directory. An error results if the app attempts to:
- create a directory whose immediate parent does not yet exist.
Parameters:
- path: The path to the directory to be looked up or created. Either an absolute path, or a relative path from this
DirectoryEntry
. (DOMString) - options: Options to specify whether the directory is to be created if it doesn't exist. (Flags)
- successCallback: A callback that executes with a
DirectoryEntry
object. (Function) - errorCallback: A callback that executes if an error occurs when creating or looking up the directory. Invoked with a
[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function success(parent) {
console.log("Parent Name: " + parent.name);
}
function fail(error) {
alert("Unable to create new directory: " + error.code);
}
// Retrieve an existing directory, or create it if it does not already exist
entry.getDirectory("newDir", {create: true, exclusive: false}, success, fail);
getFile
Creates or looks up a file. An error results if the app attempts to:
- create a file whose immediate parent does not yet exist.
Parameters:
- path: The path to the file to be looked up or created. Either an absolute path, or a relative path from this
DirectoryEntry
. (DOMString) - options: Options to specify whether the file is created if it doesn't exist. (Flags)
- successCallback: A callback that is passed a
[FileEntry](../fileentry/fileentry.html)
object. (Function) - errorCallback: A callback that executes if an error occurs when creating or looking up the file. Invoked with a
[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function success(parent) {
console.log("Parent Name: " + parent.name);
}
function fail(error) {
alert("Failed to retrieve file: " + error.code);
}
// Retrieve an existing file, or create it if it does not exist
entry.getFile("newFile.txt", {create: true, exclusive: false}, success, fail);
removeRecursively
Deletes a directory and all of its contents. In the event of an error (such as trying to delete a directory containing a file that cannot be removed), some of the contents of the directory may be deleted. An error results if the app attempts to:
- delete the root directory of a filesystem.
Parameters:
- successCallback: A callback that executes after the
DirectoryEntry
has been deleted. Invoked with no parameters. (Function) - errorCallback: A callback that executes if an error occurs when attempting to delete the
DirectoryEntry
. Invoked with a[FileError](../fileerror/fileerror.html)
object. (Function)
Quick Example
function success(parent) {
console.log("Remove Recursively Succeeded");
}
function fail(error) {
alert("Failed to remove directory or it's contents: " + error.code);
}
// remove the directory and all it's contents
entry.removeRecursively(success, fail);
BlackBerry Quirks
May fail with a ControlledAccessException
in the following cases:
- An app attempts to access a directory created by a previous installation of the app.
Solution: ensure temporary directories are cleaned manually, or by the application prior to reinstallation.
- If the device is connected by USB.
Solution: disconnect the USB cable from the device and run again.