첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

▶ Parallel 클래스 : ForEach 정적 메소드를 사용해 디렉토리 크기 구하기 예제

using System;
using System.IO;

long directorySize = GetDirectorySize(new DirectoryInfo("d:\\ARCA"), true);

Console.WriteLine(directorySize);

 

▶ Parallel 클래스 : ForEach 정적 메소드를 사용해 디렉토리 크기 구하기

using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;

#region 디렉토리 크기 구하기 - GetDirectorySize(directoryInfo, searchChildDirectory)

/// <summary>
/// 디렉토리 크기 구하기
/// </summary>
/// <param name="directoryInfo">디렉토리 정보</param>
/// <param name="searchChildDirectory">하위 디렉토리 검색 여부</param>
/// <returns>디렉토리 크기</returns>
public long GetDirectorySize(DirectoryInfo directoryInfo, bool searchChildDirectory = true)
{
    long directorySize = 0L;

    if(directoryInfo == null || !directoryInfo.Exists)
    {
        return directorySize;
    }

    foreach(FileInfo fileInfo in directoryInfo.GetFiles())
    {
        Interlocked.Add(ref directorySize, fileInfo.Length);
    }

    if(searchChildDirectory)
    {
        Parallel.ForEach
        (
            directoryInfo.GetDirectories(),
            (childDirectoryInfo) => Interlocked.Add
            (
                ref directorySize,
                GetDirectorySize(childDirectoryInfo, searchChildDirectory)
            )
        );
    }

    return directorySize;
}

#endregion
728x90
반응형
그리드형
Posted by 사용자 icodebroker

댓글을 달아 주세요