actionscript-3 – 在Flex / AIR中:是否可以检测可移动卷的大小
发布时间:2020-12-15 01:46:04 所属栏目:百科 来源:网络整理
导读:我正在使用USB移动存储 – SD卡在AS3上编写AS3应用程序 – 我需要在进度条中显示它上面的可用空间. 使用以下方法获得驱动器上的可用空间非常简单: flash.filesystem.storageVolume.rootDirectory().spaceAvailable将 ..但是为了以图形方式显示自由空间,我需
我正在使用USB移动存储 – SD卡在AS3上编写AS3应用程序 – 我需要在进度条中显示它上面的可用空间.
使用以下方法获得驱动器上的可用空间非常简单: flash.filesystem.storageVolume.rootDirectory().spaceAvailable将 ..但是为了以图形方式显示自由空间,我需要知道驱动器的总大小,我无法找到获取该信息. 就目前而言,我已经大致根据自由空间来猜测尺寸,但这显然远非理想. 我已经搜索了Adobe提供的大量文档并用Google搜索,直到我的手指疼痛,但没有运气. 我猜这可能是不可能的标准框架,可能需要写一个自定义的本地扩展 – 请告诉我,我错了:) 解决方法
我认为唯一可能的方法是递归扫描目录,这可能会占用复杂文件系统的大量时间.
import flash.filesystem.File; import flash.system.Capabilities; private function getDrives():void { var os:String = Capabilities.os.substr(0,3).toLowerCase(); var currentDrives:Array = (os=="mac") ? new File('/Volumes/').getDirectoryListing() : File.getRootDirectories() ; for each(var file:File in currentDrives){ trace ("Drive: " + file.name + " Size: " + file.size); } } 或者,采用不同的方法: import flash.filesystem.StorageVolume; var volumes:Vector.<StorageVolume> = StorageVolumeInfo.storageVolumeInfo.getStorageVolumes(); for each (var volume:StorageVolume in volumes) { // use isRemovable property for USB: if (volume.isRemovable && volume.isWritable) trace("Drive: " + volume.drive + " Size: " + volume.rootDirectory.size); } 然后,使用如下函数递归扫描: public function getDirectorySize(path:Array):Number { var size:Number = new Number(); for (var i:int = 0; i < path.length; i++) { if (File(path[i]).isDirectory) size += getDirectorySize(File(path[i]).getDirectoryListing()); else size += File(path[i]).size; } return size; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |