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

■ FileStream 클래스를 사용해 파일 동일 여부를 구하는 방법을 보여준다.

 

▶ FileStream 클래스 : 파일 동일 여부 구하기 예제

FileInfo fileInfo1 = new FileInfo("d:\\source1.txt");
FileInfo fileInfo2 = new FileInfo("d:\\source2.txt");

bool result = Equals(fileInfo1, fileInfo2);

Console.WriteLine(result);

 

▶ FileStream 클래스 : 파일 동일 여부 구하기

#region 동일 여부 구하기 - Equals(fileInfo1, fileInfo2)

/// <summary>
/// 동일 여부 구하기
/// </summary>
/// <param name="fileInfo1">파일 정보 1</param>
/// <param name="fileInfo2">파일 정보 2</param>
/// <returns>동일 여부</returns>
public bool Equals(FileInfo fileInfo1, FileInfo fileInfo2)
{
    const int BYTE_COUNT_TO_READ = sizeof(long);

    if(fileInfo1.Length != fileInfo2.Length)
    {
        return false;
    }

    if(string.Equals(fileInfo1.FullName, fileInfo2.FullName, StringComparison.OrdinalIgnoreCase))
    {
        return true;
    }

    int iterationCount = (int)Math.Ceiling((double)fileInfo1.Length / BYTE_COUNT_TO_READ);

    using(FileStream fileStream1 = fileInfo1.OpenRead())
    {
        using(FileStream fileStream2 = fileInfo2.OpenRead())
        {
            byte[] byteArray1 = new byte[BYTE_COUNT_TO_READ];
            byte[] byteArray2 = new byte[BYTE_COUNT_TO_READ];

            for(int i = 0; i < iterationCount; i++)
            {
                    fileStream1.Read(byteArray1, 0, BYTE_COUNT_TO_READ);
                    fileStream2.Read(byteArray2, 0, BYTE_COUNT_TO_READ);

                if(BitConverter.ToInt64(byteArray1, 0) != BitConverter.ToInt64(byteArray2, 0))
                {
                    return false;
                }
            }
        }
    }

    return true;
}

#endregion
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요