Trabajo con volúmenes de almacenamiento

Adobe AIR 2 y posterior

En AIR 2, es posible detectar el momento en que los volúmenes de almacenamiento masivo se montan o se desmontan. La clase StorageVolumeInfo define un objeto singleton storageVolumeInfo . El objeto StorageVolumeInfo.storageVolumeInfo distribuye un evento storageVolumeMount cuando se monta el volumen de almacenamiento. Asimismo, se distribuye un evento storageVolumeUnmount si el volumen se desmonta. La clase StorageVolumeChangeEvent define estos eventos.

Nota: en distribuciones modernas de Linux, el objeto StorageVolumeInfo solo distribuye eventos storageVolumeMount y storageVolumeUnmount para dispositivos físicos y unidades de red montadas en ubicaciones determinadas.

La propiedad storageVolume de la clase StorageVolumeChangeEvent es un objeto StorageVolume. La clase StorageVolume define las propiedades básicas del volumen de almacenamiento:

  • drive : letra de la unidad del volumen en Windows ( null en otros sistemas operativos)

  • fileSystemType : tipo del sistema de archivos en el volumen de almacenamiento (por ejemplo, "FAT", "NTFS", "HFS" o "UFS").

  • isRemoveable : indica si se puede eliminar un volumen ( true ) o no ( false ).

  • isWritable : indica si se puede modificar un volumen ( true ) o no ( false )

  • name : nombre del volumen.

  • rootDirectory : objeto File que se corresponde con el directorio raíz del volumen.

La clase StorageVolumeChangeEvent también incluye una propiedad rootDirectory . La propiedad rootDirectory es un objeto File que hace referencia al directorio raíz del volumen de almacenamiento que se ha montado o desmontado.

La propiedad storageVolume del objeto StorageVolumeChangeEvent es undefined ( null ) en volúmenes sin montar. Sin embargo, se puede acceder a la propiedad rootDirectory del evento.

El siguiente código genera el nombre y la ruta de archivo de un volumen de almacenamiento cuando se monta:

StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, onVolumeMount); 
function onVolumeMount(event:StorageVolumeChangeEvent):void 
{ 
    trace(event.storageVolume.name, event.rootDirectory.nativePath); 
}

El siguiente código genera la ruta de archivo de un volumen de almacenamiento cuando se desmonta:

StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, onVolumeUnmount); 
function onVolumeUnmount(event:StorageVolumeChangeEvent):void 
{ 
    trace(event.rootDirectory.nativePath); 
}

El objeto StorageVolumeInfo.storageVolumeInfo incluye un método getStorageVolumes() . Este método devuelve un vector de los objetos StorageVolume que se corresponde con los volúmenes de almacenamiento montados actualmente. El siguiente código muestra cómo agrupar los nombres y los directorios raíz de todos los volúmenes de almacenamiento montados:

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); 
}
Nota: en distribuciones modernas de Linux, el método getStorageVolumes() devuelve objetos correspondientes a dispositivos físicos y unidades de red montadas en ubicaciones determinadas.

El método File.getRootDirectories() incluye los directorios raíz (consulte Apuntar a la raíz del sistema de archivos . No obstante, los objetos StorageVolume (enumerados mediante el método StorageVolumeInfo.getStorageVolumes() ) ofrecen más información sobre los volúmenes de almacenamiento.

La propiedad spaceAvailable de la propiedad rootDirectory de un objeto StorageVolume se puede utilizar para obtener el espacio disponible en un volumen de almacenamiento. (Consulte Determinación del espacio disponible en un volumen .)