본문 바로가기
C#/C# Windows Form

C# 두 파일 비교하기.

by TcTT 2017. 2. 2.
반응형

오랜만에 포스팅하네요

이것저건만든 프로그램은 많지만 글쓰기가 귀찮아서.


오늘은 openFileDialog 와 FileStream을 이용하여 2개의 파일을 읽고

10진수형태로 두 데이터를 비교하여 같은지 다른지 알려주고, 다르다면 처음 다른곳의 위치와 각각 값을 알려주는 프로그램입니다.


프로그램 다운로드 :

다중파일비교.exe

단일파일비교.exe



소스전체를 올려드리면 복사 붙혀넣기식이니 설명을 드릴게요!


using System.IO;  //파일 입출력을위해 using을 넣어주시고!


FileStream FileStream1;    //파일스트림 객체를 만듭니다.

FileStream FileStream2;   //파일스트림 객체를 만듭니다.


파일을 읽어와 담아둘 byte형의 배열변수도 만들어둡시다

byte[] File1;

byte[] File2;


파일열기 1번 버튼 클릭시

openFileDialog1.InitialDirectory = Application.StartupPath;            //오픈파일다이얼로그의 시작위치는 디버그 폴더.

if (openFileDialog1.ShowDialog() == DialogResult.OK)                 //파일을 선택하여 ok누르면

{

    textBox1.Text = openFileDialog1.FileName;                            //파일 경로를 담아둘 textBox에 파일경로 입력

}


파일열기 2번버튼도 객체뒤에 숫자만바꿔 만듭시다!


//파일비교 버튼 클릭시

FileStream1 = new FileStream(openFileDialog1.FileName, FileMode.Open);    //파일스트림을 오픈다이얼로그에서 선택한파일을 오픈모드로 객체를 만듬

File1 = new byte[FileStream1.Length];                                                   //파일 데이터를담을 배열변수의 길이는 파일스트림의 길이만큼으로 초기화

FileStream1.Read(File1, 0, File1.Length);                                                 //배열변수에 파일스트림의내용을 0위치부터 배열의 크기까지 읽어 담는다

FileStream1.Close();                                                                           //모두읽었으니 파일스트림을 닫는다.


//파일 2번의 읽기또한 동일하게 진행합니다.



//for문을 파일의 길이만큼 돌면서 데이터를 체크합니다.

//File1의 길이와 File2의 길이가 다르면 for문에서 오류가 날수있습니다.

//이부분은 for문전에 IF를 사용하여 File1 , File2 길이중 어느게 큰지 비교하여 for문을 돌면됩니다.

//하지만 파일의 크기가다르다면 두개의 파일은 동일한게 아니겠죠 ?

for (int a = 0; a < File2.Length; a++)

{

if (File1[a] != File2[a])

{

MessageBox.Show("두 파일이 같지 않습니다." + Environment.NewLine + "파일 위치 : [" + a.ToString() + "]" + Environment.NewLine + "첫번째파일 내용 : [" + File1[a] + "]" + Environment.NewLine + "두번째파일 내용 : [" + File2[a] + "]");

                        return;

}

}

MessageBox.Show("두 파일이 같습니다.");




혹시라도 소스가 필요하시면 댓글주시와요

반응형

'C# > C# Windows Form' 카테고리의 다른 글

C# 픽쳐박스 사진 불러오기  (0) 2017.03.26
C# 픽쳐박스 선그리기  (1) 2017.03.26
C# 텍스트박스 원하는 값만 입력받기.  (0) 2016.11.06
간단한 예제  (0) 2016.09.19
C# Invoke  (0) 2016.08.18