flash.filesystem

# StorageVolume - AS3

Package | flash.filesystem
Class | public class StorageVolume
Inheritance | StorageVolume Object

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 2

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

- The `storageVolume` property of a StorageVolumeChangeEvent object is a StorageVolume object. This object represents the storage volume that has been mounted or unmounted.
- The `StorageVolumeInfo.storageVolumeInfo.getStorageVolumes()` method returns a vector of StorageVolume objects. Each of these StorageVolume objects represents a mounted storage volume.

View the examples

More examples

Working with storage volumes

Related API Elements

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

Public Properties
Hide Inherited Public Properties
Show Inherited Public Properties

| Property | Defined By
--- | --- | ---
|  | constructor : 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
|  | rootDirectory : File [read-only] A File object corresponding to the root directory of the volume. | StorageVolume

Public Methods
Hide Inherited Public Methods
Show Inherited Public Methods

| Method | Defined By
--- | --- | ---
|  | StorageVolume(rootDirPath:File, name:String, writable:Boolean, removable:Boolean, fileSysType:String, drive:String) The constructor function. | StorageVolume
|  | hasOwnProperty(name:String):Boolean Indicates whether an object has a specified property defined. | Object
|  | isPrototypeOf(theClass:Object):Boolean Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter. | Object
|  | propertyIsEnumerable(name:String):Boolean Indicates whether the specified property exists and is enumerable. | Object
|  | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void Sets the availability of a dynamic property for loop operations. | Object
|  | toLocaleString():String Returns the string representation of this object, formatted according to locale-specific conventions. | Object
|  | toString():String Returns the string representation of the specified object. | Object
|  | valueOf():Object Returns the primitive value of the specified object. | Object

Property Detail

### drive

property

`drive:String` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 2

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

Implementation
`public function get drive():String`

### fileSystemType

property

`fileSystemType:String` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | 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 ( How to use this example )
The following code lists the native path for the root directory and the file system type of each mounted storage volume:
Copy

    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 + ")");
    }

### isRemovable

property

`isRemovable:Boolean` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | 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 ( How to use this example )
The following code outputs a list of non-removable storage volumes, followed by a list of removable storage volumes:
Copy

    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);
        }
    }

### isWritable

property

`isWritable:Boolean` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | 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`

Related API Elements

flash.fileSystem.File.spaceAvailable
Example ( How to use this example )
The following code outputs a list of writable storage volumes and the space available on each:
Copy

    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);
        }
    }

### name

property

`name:String` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | 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 ( How to use this 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:
Copy

    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);
    }

### rootDirectory

property

`rootDirectory:File` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 2

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

Implementation
`public function get rootDirectory():File`
Example ( How to use this example )
The following code lists the native path for the root directory of each mounted storage volume:
Copy

    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 Versions: | 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 How to use this example
StorageVolumeExample.as
The following code lists the properties of each mounted storage volume:
Copy

    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("________________________________________________________");
                }
            }
        }
    }

StorageVolumeChangeEventExample.as
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:
Copy

    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();
            }
        }
    }

© 2015 Adobe Systems Incorporated. All rights reserved.
Mon Apr 10 2017, 12:28 PM -07:00