첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

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

using System;
using System.IO;

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

Console.WriteLine(directorySize);

 

728x90

 

▶ 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

댓글을 달아 주세요