Nano Hash - криптовалюты, майнинг, программирование

FLEX: получение размера папки

Я пытаюсь получить размер папки, выполнив:

var FolderFile:File = new File("file:///SomePath/Folder");
var FolderSize: FolderFile.size;

Но это дает мне значение 0, как я могу получить размер папки? Есть какой-либо способ сделать это?

Транки


  • Что вы ожидаете от второй строки? 12.01.2010
  • что вы подразумеваете под размером папки .. это размер папки, например 10 МБ, или количество элементов в папке ?? 12.01.2010
  • Проверьте свой синтаксис - ваша вторая строка, вероятно, должна выглядеть так: var FolderSize:Number = FolderFile.size. 12.01.2010
  • Это вопрос AIR (файл относится только к классу AIR), и .size должен возвращать числовое значение. 12.01.2010

Ответы:


1

Нет, нет никакого способа сделать это автоматически. Получение размера каталога — сложная и потенциально мучительно медленная операция. В каталоге могут быть десятки тысяч файлов, или каталог может быть расположен в (медленной?) сети, не говоря уже о ленточном хранилище и подобных сценариях.

Сами файловые системы не хранят информацию о размере каталога, и единственный способ узнать ее - вычислить ее файл за файлом, быстрого/легкого пути нет. Итак, вам придется полагаться на решение, которое вы разместили выше, и да, оно будет медленным.

13.01.2010
  • Поверьте этому парню. Вы можете видеть, что такое же ограничение есть и в самой ОС - WinXP требуется около 30 секунд, чтобы суммировать размер моей папки c:\windows. 13.01.2010
  • Хорошо, спасибо за ваше время :). Я собираюсь использовать решение, которое я разместил выше. Транки снова 14.01.2010

  • 2

    Я хочу знать размер папки (например, 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());
    

    Но это очень медленный метод, есть ли более быстрый и простой способ узнать размер папки?

    Извините за мою грамматику, я только учу английский.

    Спасибо

    12.01.2010
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..