Packageflash.filesystem
Classpublic class StorageVolume
InheritanceStorageVolume Inheritance Object

Language version: ActionScript 3.0
Runtime version: AIR 2

A StorageVolume object includes properties defining a mass storage volume. This class is used in two ways:

View the examples.

See also

flash.filesystem.StorageVolumeInfo.getStorageVolumes()
flash.events.StorageVolumeChangeEvent.storageVolume


Public Properties
 PropertyDefined by
 Inheritedconstructor : Object
A reference to the class object or constructor function for a given object instance.
Object
  drive : String
[read-only] The volume drive letter on Windows.
StorageVolume
  fileSystemType : String
[read-only] The type of file system on the storage volume (such as "FAT", "NTFS", "HFS", or "UFS").
StorageVolume
  isRemovable : Boolean
[read-only] Whether the operating system considers the storage volume to be removable (true) or not (false).
StorageVolume
  isWritable : Boolean
[read-only] Whether a volume is writable (true) or not (false).
StorageVolume
  name : String
[read-only] The name of the volume.
StorageVolume
 Inheritedprototype : Object
[static] A reference to the prototype object of a class or function object.
Object
  rootDirectory : File
[read-only] A File object corresponding to the root directory of the volume.
StorageVolume
Public Methods
 MethodDefined by
  
StorageVolume(rootDirPath:File, name:String, writable:Boolean, removable:Boolean, fileSysType:String, drive:String)
The constructor function.
StorageVolume
 Inherited
Indicates whether an object has a specified property defined.
Object
 Inherited
Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter.
Object
 Inherited
Indicates whether the specified property exists and is enumerable.
Object
 Inherited
Sets the availability of a dynamic property for loop operations.
Object
 Inherited
Returns the string representation of this object, formatted according to locale-specific conventions.
Object
 Inherited
Returns the string representation of the specified object.
Object
 Inherited
Returns the primitive value of the specified object.
Object
Property detail
driveproperty
drive:String  [read-only]

Language version: ActionScript 3.0
Runtime version: AIR 2

The volume drive letter on Windows. On other platforms, this property is set to null.

Implementation
    public function get drive():String
fileSystemTypeproperty 
fileSystemType:String  [read-only]

Language version: ActionScript 3.0
Runtime version: AIR 2

The type of file system on the storage volume (such as "FAT", "NTFS", "HFS", or "UFS").

Implementation
    public function get fileSystemType():String

Example
The following code lists the native path for the root directory and the file system type of each mounted storage volume:
var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();
for (var i:int = 0; i < volumes.length; i++)
{
    trace(volumes[i].rootDirectory.nativePath, "(" + volumes[i].fileSystemType + ")");
}

isRemovableproperty 
isRemovable:Boolean  [read-only]

Language version: ActionScript 3.0
Runtime version: AIR 2

Whether the operating system considers the storage volume to be removable (true) or not (false).

The following table lists the values StorageVolume.isRemovable property for various types of devices:

Type of device Mac OS Windows Linux
CD/DVD (fixed) true true true
USB flash drive true true true
USB hard srive false false true
FireWire hard drive false false true
Shared volume true false - 1
Network drive false false false
Storage card reader (empty) - 2 false - 2
Storage card reader (with SD/CF card) true true true

1 Linux does not have a concept of a shared volume.

2 On Windows, an empty card reader is listed as a non-removable device. On Mac OS and Linux, empty car readers are not listed as storage volumes.

Implementation
    public function get isRemovable():Boolean

Example
The following code outputs a list of non-removable storage volumes, followed by a list of removable storage volumes:
var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();

trace("Non-removeable volumes:");
for (var i:int = 0; i < volumes.length; i++)
{
    if (!volumes[i].isRemovable)
	{
		trace(volumes[i].rootDirectory.nativePath);
	}
}

trace("\nRemoveable volumes:");
for (i = 0; i < volumes.length; i++)
{
	if (volumes[i].isRemovable)
	{
		trace(volumes[i].rootDirectory.nativePath);
	}
}

isWritableproperty 
isWritable:Boolean  [read-only]

Language version: ActionScript 3.0
Runtime version: AIR 2

Whether a volume is writable (true) or not (false).

Note: You can determine the amount of space available on a volume by calling the rootDirectory.spaceAvailble property of the StorageVolume object.

Implementation
    public function get isWritable():Boolean

See also

flash.fileSystem.File.spaceAvailable

Example
The following code outputs a list of writable storage volumes and the space available on each:
var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();

for (var i:int = 0; i < volumes.length; i++)
{
    if(volumes[i].isWritable)
    {         
        trace(volumes[i].rootDirectory.nativePath, volumes[i].rootDirectory.spaceAvailable);
    }
}

nameproperty 
name:String  [read-only]

Language version: ActionScript 3.0
Runtime version: AIR 2

The name of the volume. If there is no name, this property is set to null.

Implementation
    public function get name():String

Example
The following code lists the native path for the root directory and the file system name (if there is one) of each mounted storage volume:
var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();
for (var i:int = 0; i < volumes.length; i++)
{
    var name:String = new String();
	if (volumes[i].name)
	{
		name = "(" + volumes[i].name + ")";
	}
	trace(volumes[i].rootDirectory.nativePath, name);
}

rootDirectoryproperty 
rootDirectory:File  [read-only]

Language version: ActionScript 3.0
Runtime version: AIR 2

A File object corresponding to the root directory of the volume.

Implementation
    public function get rootDirectory():File

Example
The following code lists the native path for the root directory of each mounted storage volume:
var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();
for (var i:int = 0; i < volumes.length; i++)
{
    trace(volumes[i].rootDirectory.nativePath);
}

Constructor detail
StorageVolume()constructor
public function StorageVolume(rootDirPath:File, name:String, writable:Boolean, removable:Boolean, fileSysType:String, drive:String)

Language version: ActionScript 3.0
Runtime version: AIR 2

The constructor function. Generally, you do not call this constructor function directly (to create new StorageVolume objects). Rather, you reference StorageVolume objects by accessing the storageVolume property of a StorageVolumeChangeEvent object or by calling StorageVolumeInfo.storageVolumeInfo.getStorageVolumes().

Parameters
rootDirPath:File
 
name:String
 
writable:Boolean
 
removable:Boolean
 
fileSysType:String
 
drive:String
Examples
examples\StorageVolumeExample
The following code lists the properties of each mounted storage volume:
package
{
    import flash.display.Sprite;
    import flash.filesystem.StorageVolume;
    import flash.filesystem.StorageVolumeInfo;

    public class StorageVolumeExample extends Sprite
    {
        public function StorageVolumeExample()
        {
            var volumes:Vector.<StorageVolume> = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();
            for (var i:int = 0; i < volumes.length; i++)
            {
                var volume:StorageVolume = volumes[i];
                trace("nativePath:", volume.rootDirectory.nativePath);
                trace("fileSystemType:", volume.fileSystemType);
                trace("isRemovable:", volume.isRemovable);
                trace("isWritable:", volume.isWritable);
                trace("drive:", volume.drive);
                trace("name:", volume.name);
                trace("________________________________________________________");
            }
        }
    }
}
examples\StorageVolumeChangeEventExample
The following code lists the properties of each storage volume that becomes mounted or unmounted. Note that the storageVolume property of the StorageVolumeChangeEvent is only set for the storageVolumeMount event; it is null for the storageVolumeUnmount event:
package
{
    import flash.display.Sprite;
    import flash.events.StorageVolumeChangeEvent;
    import flash.filesystem.StorageVolume;
    import flash.filesystem.StorageVolumeInfo;

    public class StorageVolumeChangeEventExample extends Sprite
    {
        public function StorageVolumeChangeEventExample()
        {
            StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, mountEventHandler);
            StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, unmountEventHandler);
        }
        public function mountEventHandler(event:StorageVolumeChangeEvent):void
        {            
            var volume:StorageVolume = event.storageVolume;
            trace("VOLUME MOUNTED:");
            trace("nativePath:", event.rootDirectory.nativePath);
            trace("fileSystemType:", volume.fileSystemType);
            trace("isRemovable:", volume.isRemovable);
            trace("isWritable:", volume.isWritable);
            trace("drive:", volume.drive);
            trace("name:", volume.name);
            trace();
        }
        public function unmountEventHandler(event:StorageVolumeChangeEvent):void
        {            
            trace("VOLUME UNMOUNTED:");
            trace("nativePath:", event.rootDirectory.nativePath);
            trace();
        }        
    }
}