gpt4 book ai didi

actionscript-3 - 在 Flex/AIR : Is it possible to detect the size of a removable volume?

转载 作者:行者123 更新时间:2023-12-01 01:20:01 25 4
gpt4 key购买 nike

我正在 Flex 上的 AS3 中编写一个应用程序,该应用程序使用 USB 可移动存储 - SD 卡 - 我需要在进度条中显示其上的可用空间。

使用以下方法获取驱动器上的可用空间非常简单:
flash.filesystem.storageVolume.rootDirectory().spaceAvailable
..但是要以图形方式显示可用空间,我需要知道驱动器的总大小,但无论如何我都找不到获取该信息的方法。

目前,我已经根据可用空间粗略地猜测大小,但这显然远非理想。

我已经搜索了 Adob​​e 提供的大量文档并在谷歌上搜索,直到我的手指疼痛,但没有运气。

我猜这在标准框架中可能是不可能的,并且可能需要编写自定义的 Native 扩展 - 请告诉我我错了 :)

最佳答案

我认为唯一可能的方法是递归扫描目录,这可能会为复杂的文件系统消耗大量时间。

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

关于actionscript-3 - 在 Flex/AIR : Is it possible to detect the size of a removable volume?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9998013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com