2010-01-12 5 views
1

나는FLEX : 폴더 크기 가져 오기

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

그러나 이것으로 폴더 크기를 얻는 것을 triying하고있다. 그러나 이것은 0 값을 준다. 어떻게 폴더 크기를 얻을 수 있을까? 어쨌든이 일을 할 수 있습니까?

tranks

+1

두 번째 줄에서 무엇을 기대합니까? –

+0

폴더 크기가 의미하는 바는 무엇입니까? 10MB 나 폴더의 항목 수와 같은 폴더의 크기입니까? – Treby

+0

구문을 확인하십시오. 두 번째 줄에는 var FolderSize : Number = FolderFile.size를 읽어야합니다. –

답변

4

아니요, 자동으로 수행 할 방법이 없습니다. 디렉토리의 크기를 얻는 것은 복잡하고 잠재적으로 고통스럽게 느린 작업입니다. 디렉토리에 수십만 개의 파일이있을 수 있으며, 테이프 스토리지 및 이와 유사한 시나리오는 말할 것도없이 디렉토리가 (느린?) 네트워크에있을 수 있습니다.

파일 시스템 자체는 디렉토리 크기 정보를 저장하지 않으며, 파일 단위로 파일 시스템을 계산하는 것이 유일한 방법이므로 빠르고 쉬운 바로 가기가 없습니다. 따라서 위에 게시 한 솔루션에 의존해야합니다. 그렇습니다. 느려질 것입니다.

+0

이 갈라진 틈을 믿으십시오. 동일한 제한이 OS 자체에 있음을 알 수 있습니다. winXP는 약 30 초 내에 내 c : \ windows 폴더의 크기를 합산합니다. – fenomas

+0

좋아, 시간 내 주셔서 감사합니다. :) 위에 게시 한 솔루션을 사용하겠습니다. 다시 트랭크 – Edward

1

폴더 크기 (10MB)를 알고 싶습니다. 두 번째 줄에 대한 미안 해요, 잘못, 그것의 총수 :

var Foldersize:Number = FolderFile.size; 

난 그냥 새로운 클래스 느릅 나무를 만들어이 기능을 실행 : 당신이 FolderFile.getDirectoryListing를 통과 "소스"에서

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

을() , 다음과 같이 입력하십시오 :

var CC:CustomClass = new CustomClass(); 
var FolderSize:Number = CustomClass.GetFolderSize(FolderFile.getDirectoryListing()); 

그러나 이것은 매우 느린 방법입니다.

미안 해요, 문법 때문에 영어를 배우는 중이에요.

감사합니다.