ストレージボリュームの操作

Adobe AIR 2 以降

AIR 2 では、マスストレージボリュームのマウントまたはアンマウントを検出できます。StorageVolumeInfo クラスは、シングルトンオブジェクト storageVolumeInfo を定義します。StorageVolumeInfo.storageVolumeInfo オブジェクトは、ストレージボリュームがマウントされたときに、storageVolumeMount イベントを送出します。また、ボリュームがアンマウントされたときには storageVolumeUnmount イベントを送出します。StorageVolumeChangeEvent クラスでは、これらのイベントを定義します。

注意: 最新の Linux ディストリビューションでは、StorageVolumeInfo オブジェクトは、特定の場所にマウントされた物理ドライブおよびネットワークドライブに対して storageVolumeMount および storageVolumeUnmount イベントのみを送出します。

StorageVolumeChangeEvent クラスの storageVolume プロパティは StorageVolume オブジェクトです。StorageVolume クラスは、次のようなストレージボリュームの基本的なプロパティを定義します。

  • drive - Windows のボリ ームドライブ文字(その他のオペレーティングシステムでは null

  • fileSystemType — ストレージボリューム上のファイルシステムのタイプ(「FAT」、「NTFS」、「HFS」、「UFS」など)

  • isRemoveable — ボリュームが削除可能(true)か不可能(false)か

  • isWritable — ボリュームが書き込み可能(true)か不可能(false)か

  • name — ボリュームの名前

  • rootDirectory — ボリュームのルートディレクトリに対応する File オブジェクト

StorageVolumeChangeEvent クラスには rootDirectory プロパティも含まれています。rootDirectory プロパティは File オブジェクトで、マウントまたはアンマウントされたストレージボリュームのルートディレクトリを参照します。

StorageVolumeChangeEvent オブジェクトの storageVolume プロパティは、アンマウントされたボリュームに対しては定義されていません(null)。ただし、イベントの rootDirectory プロパティにアクセスすることはできます。

次のコードでは、ストレージボリュームがマウントされたときに、その名前とファイルパスを出力します。

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

次のコードでは、ストレージボリュームがアンマウントされたときに、そのファイルパスを出力します。

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

StorageVolumeInfo.storageVolumeInfo オブジェクトには getStorageVolumes() メソッドが含まれています。このメソッドは、現在マウントされているストレージボリュームに対応する StorageVolume オブジェクトのベクトルを返します。次のコードは、マウントされているすべてのストレージボリュームの名前とルートディレクトリのリストを表示する方法を示しています。

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); 
}
注意: 最新の Linux ディストリビューションでは、getStorageVolumes() メソッドは、物理デバイスおよび特定の場所にマウントされたネットワークドライブに対応するオブジェクトを返します。

File.getRootDirectories() メソッドによって、ルートディレクトリがリストされます(ファイルシステムルートの参照を参照)。ただし、StorageVolume オブジェクト(StorageVolumeInfo.getStorageVolumes() メソッドによって列挙)のほうが、ストレージボリュームに関する情報がより詳細に表示されます。

StorageVolume オブジェクトの rootDirectory プロパティの spaceAvailable プロパティを使用すると、ストレージボリューム上で利用可能な領域を確認できます(ボリューム上の利用可能な領域の特定を参照)。