Я пытаюсь получить размер папки, выполнив:
var FolderFile:File = new File("file:///SomePath/Folder");
var FolderSize: FolderFile.size;
Но это дает мне значение 0, как я могу получить размер папки? Есть какой-либо способ сделать это?
Транки
Я пытаюсь получить размер папки, выполнив:
var FolderFile:File = new File("file:///SomePath/Folder");
var FolderSize: FolderFile.size;
Но это дает мне значение 0, как я могу получить размер папки? Есть какой-либо способ сделать это?
Транки
Нет, нет никакого способа сделать это автоматически. Получение размера каталога — сложная и потенциально мучительно медленная операция. В каталоге могут быть десятки тысяч файлов, или каталог может быть расположен в (медленной?) сети, не говоря уже о ленточном хранилище и подобных сценариях.
Сами файловые системы не хранят информацию о размере каталога, и единственный способ узнать ее - вычислить ее файл за файлом, быстрого/легкого пути нет. Итак, вам придется полагаться на решение, которое вы разместили выше, и да, оно будет медленным.
Я хочу знать размер папки (например, 10 МБ). Извините за вторую строку, я неправильно написал, это:
var Foldersize:Number = FolderFile.size;
Я только что создал новый класс, который выполняет эту функцию:
public function GetFolderSize(Source:Array):Number
{
var TotalSizeInteger:Number = new Number();
for(var i:int = 0;i<Source.length;i++){
if(Source[i].isDirectory){
TotalSizeInteger += this.GetFoldersize(Source[i].getDirectoryListing());
}
else{
TotalSizeInteger += Source[i].size;
}
}
return TotalSizeInteger;
}
В «Источнике» вы передаете FolderFile.getDirectoryListing() примерно так:
var CC:CustomClass = new CustomClass();
var FolderSize:Number = CustomClass.GetFolderSize(FolderFile.getDirectoryListing());
Но это очень медленный метод, есть ли более быстрый и простой способ узнать размер папки?
Извините за мою грамматику, я только учу английский.
Спасибо