오랜만에 포스팅하네요
이것저건만든 프로그램은 많지만 글쓰기가 귀찮아서.
오늘은 openFileDialog 와 FileStream을 이용하여 2개의 파일을 읽고
10진수형태로 두 데이터를 비교하여 같은지 다른지 알려주고, 다르다면 처음 다른곳의 위치와 각각 값을 알려주는 프로그램입니다.
프로그램 다운로드 :
소스전체를 올려드리면 복사 붙혀넣기식이니 설명을 드릴게요!
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 |