Working with storage volumes
In AIR 2, you can detect when mass storage volumes are mounted or unmounted. The
StorageVolumeInfo class defines a singleton storageVolumeInfo
object. The
StorageVolumeInfo.storageVolumeInfo
object dispatches a storageVolumeMount
event when a storage volume is mounted. And it dispatches a
storageVolumeUnmount
event when a volume is unmounted. The
StorageVolumeChangeEvent class defines these events.
Note: On modern Linux distributions, the StorageVolumeInfo object only
dispatches storageVolumeMount
and storageVolumeUnmount
events for physical
devices and network drives mounted at particular locations.
The storageVolume
property of the StorageVolumeChangeEvent class is a
StorageVolume object. The StorageVolume class defines basic properties of the
storage volume:
drive
—The volume drive letter on Windows (null
on other operating systems)fileSystemType
—The type of file system on the storage volume (such as "FAT", "NTFS", "HFS", or "UFS")isRemoveable
—Whether a volume is removable (true
) or not (false
)isWritable
—Whether a volume is writable (true
) or not (false
)name
—The name of the volumerootDirectory
—A File object corresponding to the root directory of the volume
The StorageVolumeChangeEvent class also includes a rootDirectory
property. The
rootDirectory
property is a File object referencing the root directory of the
storage volume that has been mounted or unmounted.
The storageVolume
property of the StorageVolumeChangeEvent object is undefined
( null
) for an unmounted volume. However you can access the rootDirectory
property of the event.
The following code outputs the name and file path of a storage volume when it is mounted:
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, onVolumeMount);
function onVolumeMount(event:StorageVolumeChangeEvent):void
{
trace(event.storageVolume.name, event.rootDirectory.nativePath);
}
The following code outputs the file path of a storage volume when it is unmounted:
StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, onVolumeUnmount);
function onVolumeUnmount(event:StorageVolumeChangeEvent):void
{
trace(event.rootDirectory.nativePath);
}
The StorageVolumeInfo.storageVolumeInfo
object includes a
getStorageVolumes()
method. This method returns a vector of StorageVolume
objects corresponding to the currently mounted storage volumes. The following
code shows how to list the names and root directories of all mounted storage
volumes:
var volumes:Vector.<StorageVolume> = new Vector.<StorageVolume>;
volumes = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes();
for (var i:int = 0; i < volumes.length; i++)
{
trace(volumes[i].name, volumes[i].rootDirectory.nativePath);
}
Note: On modern Linux distributions, the getStorageVolumes()
method returns
objects corresponding to physical devices and network drives mounted at
particular locations.
The File.getRootDirectories()
method lists the root directories (see
Pointing to the file system root.
However, the StorageVolume objects (enumerated by the
StorageVolumeInfo.getStorageVolumes()
method) provides more information about
the storage volumes.
You can use the spaceAvailable
property of the rootDirectory
property of a
StorageVolume object to get the space available on a storage volume. (See
Determining space available on a volume.)
More Help topics