첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 파일 비교하기 예제

------------------------------------------------------------------------------------------------------------------------

using System;

 

bool result = CompareFile(@"d:\source1.zip", "d:\source2.zip");

 

Console.WriteLine(result);

------------------------------------------------------------------------------------------------------------------------

 

■ 파일 비교하기

------------------------------------------------------------------------------------------------------------------------

using System;

using System.IO;

 

#region 스트림 비교하기 - CompareStream(stream1, stream2)

 

/// <summary>

/// 스트림 비교하기

/// </summary>

/// <param name="stream1">스트림 1</param>

/// <param name="stream2">스트림 2</param>

/// <returns>스트림 비교 결과</returns>

public bool CompareStream(Stream stream1, Stream stream2)

{

    const int BUFFER_SIZE = 4096;

 

    byte[] bufferArray1 = new byte[BUFFER_SIZE];

    byte[] bufferArray2 = new byte[BUFFER_SIZE];

 

    int count1;

    int count2;

 

    int iterationCount;

 

    long value1;

    long value2;

 

    while(true)

    {

        count1 = stream1.Read(bufferArray1, 0, BUFFER_SIZE);

        count2 = stream2.Read(bufferArray2, 0, BUFFER_SIZE);

 

        if(count1 != count2)

        {

            return false;

        }

 

        if(count1 == 0)

        {

            return true;

        }

 

        iterationCount = (int)Math.Ceiling((double)count1 / sizeof(long));

 

        for(var i = 0; i < iterationCount; i++)

        {

            value1 = BitConverter.ToInt64(bufferArray1, i * sizeof(long));

            value2 = BitConverter.ToInt64(bufferArray2, i * sizeof(long));

 

            if(value1 != value2)

            {

                return false;

            }

        }

    }

}

 

#endregion

#region 파일 비교하기 - CompareFile(filePath1, filePath2)

 

/// <summary>

/// 파일 비교하기

/// </summary>

/// <param name="filePath1">파일 경로 1</param>

/// <param name="filePath2">파일 경로 2</param>

/// <returns>파일 비교 결과</returns>

public bool CompareFile(string filePath1, string filePath2)

{

    FileInfo fileInfo1 = new FileInfo(filePath1);

    FileInfo fileInfo2 = new FileInfo(filePath2);

 

    if(fileInfo1.Length != fileInfo2.Length)

    {

        return false;

    }

 

    bool result;

 

    using(FileStream stream1 = fileInfo1.OpenRead())

    {

        using(FileStream stream2 = fileInfo2.OpenRead())

        {

            result = CompareStream(stream1, stream2);

        }

    }

 

    return result;

}

 

#endregion

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요