2008-09-26 7 views
0

나는 매일 폴더 크기를 기록하는 오래된 앱을 변환하고있다. 레거시 응용 프로그램은 Scripting.FileSystemObject와 라이브러리를 사용폴더의 크기는 어떻게 얻습니까?

Set fso = CreateObject("Scripting.FileSystemObject") 
Set folderObject = fso.GetFolder(folder) 
size = folderObject.Size 

System.IO.Directory와 System.IO.DirectoryInfo 클래스에 해당하는 메커니즘이 없습니다.

.NET에서 같은 결과를 얻으려면 실제로 전체 파일 구조를 반복적으로 전체 폴더 구조로 이동해야합니까?

업데이트 : @ Jonathon/Ed - 감사합니다 .... 내가 생각한대로. 필자는 Scripting.FileSystemObject COM 라이브러리를 참조 할 것입니다. 내 애플의. NET 순도를 깨는 경우에도 마찬가지로 잘 작동합니다. 내부보고 앱을위한 것이므로 큰 문제는 아닙니다.

답변

2

나는 이미 답을 알고 있다고 생각; (자식 디렉터리뿐만 아니라 디렉터리에있는 모든 파일을 추가해야합니다.)이 기능에 대한 기본 제공 기능에 대해서는 잘 모릅니다.하지만이 모든 것을 알지 못합니다. 이 뒤로 잠시에 대한

3

슬프게도, 그렇습니다 ... 누가 그 이유를 알고 있습니다.

public static long DirSize(DirectoryInfo d) 
{  
    long Size = 0;  
    // Add file sizes. 
    FileInfo[] fis = d.GetFiles(); 
    foreach (FileInfo fi in fis) 
    {  
     Size += fi.Length;  
    } 
    // Add subdirectory sizes. 
    DirectoryInfo[] dis = d.GetDirectories(); 
    foreach (DirectoryInfo di in dis) 
    { 
     Size += DirSize(di); 
    } 
    return(Size); 
} 

에서 볼 수 있듯이 :

http://msdn.microsoft.com/en-us/library/system.io.directory.aspx

0

MADS 크리스텐센 posted ...

private double size = 0; 

private double GetDirectorySize(string directory) 
{ 
    foreach (string dir in Directory.GetDirectories(directory)) 
    { 
     GetDirectorySize(dir); 
    } 

    foreach (FileInfo file in new DirectoryInfo(directory).GetFiles()) 
    { 
     size += file.Length; 
    } 

    return size; 
} 
+0

은 링크가 끊어집니다. –

+0

@Mostafa 링크를 수정하고 코드 샘플을 포함 시켰습니다. –

관련 문제