현재 오프라인 상태입니다. 인터넷에 다시 연결하기를 기다리고 있습니다.

Visual C++ .NET 또는 Visual C++ 2005를 사용하여 FileCompare 함수를 만드는 방법

중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

816189
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
이 문서에서는 Microsoft Visual C# .NET 버전에 320348 참조하십시오.
이 문서에서는 Microsoft Visual Basic .NET 버전에 320346 참조하십시오.
이 문서에서는 다음 Microsoft .NET 참조하는 Framework 클래스 라이브러리 네임스페이스:

System.IO

요약
이 문서에서는 해당 내용을 동일한 있는지 두 파일을 비교하는 방법에 대해 설명합니다. 이 비교 시 두 파일의 내용을 보이지만 않은 파일 이름, 위치, 날짜, 시간, 또는 다른 특성을 않습니다.

이 기능을 위해 MS-MS-DOS 기반 Fc.exe 유사한 다양한 버전의 Microsoft Windows 및 Microsoft MS-DOS 일부 개발 도구와 함께 포함된 유틸리티.

이 문서에서 설명하는 예제 코드가 일치하지 않는 부분의 찾을 때까지 또는 파일의 끝에 도달할 때까지 의해 바이트 비교를 수행합니다. 이 코드는 또한 비교 효율성을 높이는 데 다음 두 가지 간단한 검사를 수행합니다.
  • 두 파일 모두 같은 파일으로의 참조를 지점을 파일 경우 같아야 합니다.
  • 두 크기가 다른 파일을 경우 두 파일이 서로 다릅니다.

샘플 만들기

  1. Visual Studio .NET 2003) 또는 Microsoft Visual Studio 2005 시작하십시오.
  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트 를 클릭하십시오.
  3. 프로젝트 형식Visual C++ 프로젝트 클릭한 다음 템플릿 에서 빈 프로젝트 (.NET)을 누릅니다. 프로젝트 이름을 FileCompare.

    참고 Visual Studio 2005에서 프로젝트 형식Visual C++ 클릭한 다음 템플릿 에서 빈 프로젝트 를 누릅니다.
  4. 솔루션 탐색기에서 FileCompare 마우스 오른쪽 단추로, 추가 를 가리킨 다음 새 항목 추가 클릭하십시오.
  5. 새 항목 추가 대화 상자의 템플릿 에서 헤더 파일 을 클릭하십시오. 이름 텍스트 상자에 Form1 을 입력한 다음 열기 를 클릭하십시오. Form1.h 파일이 표시됩니다.
  6. Paste the following code in the Form1.h file:
    #pragma once#using <mscorlib.dll>#using <system.windows.forms.dll>#using <system.dll>#using <system.drawing.dll>namespace Compare{	using namespace System;	using namespace System::ComponentModel;	using namespace System::Collections;	using namespace System::Windows::Forms;	using namespace System::Drawing;	using namespace System::IO;	public __gc class Form1 : public System::Windows::Forms::Form	{		public:		Form1(void)		{			InitializeComponent();		}  	protected:		void Dispose(Boolean disposing)		{			if (disposing && components)			{				components->Dispose();			}			__super::Dispose(disposing);		}		private: System::Windows::Forms::TextBox *  textBox1;	private: System::Windows::Forms::TextBox *  textBox2;	private: System::Windows::Forms::Label *  label1;	private: System::Windows::Forms::Label *  label2;	private: System::Windows::Forms::Button *  Compare;	private:		System::ComponentModel::Container * components;				void InitializeComponent(void)		{			this->textBox1 = new System::Windows::Forms::TextBox();			this->textBox2 = new System::Windows::Forms::TextBox();			this->label1 = new System::Windows::Forms::Label();			this->label2 = new System::Windows::Forms::Label();			this->Compare = new System::Windows::Forms::Button();			this->SuspendLayout();			// 			// textBox1			// 			this->textBox1->Location = System::Drawing::Point(32, 104);			this->textBox1->Name = S"textBox1";			this->textBox1->TabIndex = 0;			this->textBox1->Text = S"";			// 			// textBox2			// 			this->textBox2->Location = System::Drawing::Point(168, 104);			this->textBox2->Name = S"textBox2";			this->textBox2->TabIndex = 1;			this->textBox2->Text = S"";			// 			// label1			// 			this->label1->Location = System::Drawing::Point(32, 64);			this->label1->Name = S"label1";			this->label1->TabIndex = 2;			this->label1->Text = S"File1";			// 			// label2			// 			this->label2->Location = System::Drawing::Point(176, 64);			this->label2->Name = S"label2";			this->label2->TabIndex = 3;			this->label2->Text = S"File2";			// 			// Compare			// 			this->Compare->Location = System::Drawing::Point(96, 168);			this->Compare->Name = S"Compare";			this->Compare->TabIndex = 4;			this->Compare->Text = S"Compare";			this->Compare->Click += new System::EventHandler(this, button1_Click);			// 			// Form1			// 			this->AutoScaleBaseSize = System::Drawing::Size(5, 13);			this->ClientSize = System::Drawing::Size(292, 273);			this->Controls->Add(this->Compare);			this->Controls->Add(this->label2);			this->Controls->Add(this->label1);			this->Controls->Add(this->textBox2);			this->Controls->Add(this->textBox1);			this->Name = S"Form1";			this->Text = S"Form1";			this->ResumeLayout(false);		}	private:		System::Void button1_Click(System::Object *  sender, System::EventArgs *  e)		{	 		}	};}
    이 코드에서는 두 텍스트 상자 컨트롤 및 명령 단추를 포함하는 폼을 만듭니다.

    참고 공용 언어 런타임 지원 컴파일러 옵션을 추가해야 합니다 (/clr:oldSyntax) 성공적으로 이전 코드 샘플을 컴파일하려면 Visual C++ 2005 에서. Visual C++ 2005에서는 공용 언어 런타임 지원 컴파일러 옵션을 추가하려면 다음과 같이 하십시오.
    1. 프로젝트 를 클릭한 다음 <ProjectName> 속성을.

      참고<ProjectName> 프로젝트 이름에 대한 자리 표시자입니다.
    2. 구성 속성 을 확장한 다음 일반 을 클릭하십시오.
    3. 확인란을 선택하고 공용 언어 런타임 지원, 이전 구문 (/clr:oldSyntax)공용 언어 런타임 지원 프로젝트 설정을 오른쪽 창에 적용 을 누른 다음 확인 을 누릅니다.
    공용 언어 런타임에 대한 자세한 내용은 컴파일러 옵션을 지원하는 보려면 다음 Microsoft 웹 사이트를 방문하십시오.
    /clr (공용 언어 런타임 컴파일)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  7. Form1 클래스에 다음 함수를 추가합니다:
    // This method accepts two strings that represent two files to // compare. A return value of 0 indicates that the contents of the files// are the same. A return value of any other value indicates that the // files are different.private:bool FileCompare(String *file1, String *file2){	int file1byte;	int file2byte;	FileStream *fs1;	FileStream *fs2;    	// Determine if the same file was referenced two times.	if (String::Equals(file1,file2))	{		// Return true to indicate that the files are the same.		return true;	}        	// Open the two files.	try	{		fs1 = new FileStream(file1, FileMode::Open);		fs2 = new FileStream(file2, FileMode::Open);				    		// Check the file sizes. If the sizes are different, the files 		// are different.		if (fs1->Length != fs2->Length)		{			// Close the file			fs1->Close();			fs2->Close();			// Return false to indicate files are different			return false;		}		// Read and compare a byte from each file until either a		// non-matching set of bytes is found or until the end of		// file1 is reached.		do 		{			// Read one byte from each file.			file1byte = fs1->ReadByte();			file2byte = fs2->ReadByte();		}		while ((file1byte == file2byte) && (file1byte != -1));		// Close the files.		fs1->Close();		fs2->Close();	}		catch(Exception *ex)	{		if(fs1)		{			fs1->Close();		}		if(fs2)		{			fs2->Close();		}		throw ex;	}	// Return the success of the comparison. "file1byte" is 	// equal to "file2byte" at this point only if the files are 	// the same.	return ((file1byte - file2byte) == 0);}
  8. Form1 클래스에 button1_Click 명령 단추의 Click 이벤트에 다음 코드를 붙여:
    try{	if (FileCompare(this->textBox1->Text, this->textBox2->Text))	{		MessageBox::Show("Files are equal.");					}	else	{		MessageBox::Show("Files are not equal.");	}}catch(Exception *ex){	MessageBox::Show(ex->Message);}
  9. 솔루션 탐색기에서 FileCompare 마우스 오른쪽 단추로, 추가 를 가리킨 다음 새 항목 추가 클릭하십시오.
  10. 새 항목 추가 대화 상자의 템플릿 에서 C++ 파일 을 클릭하십시오. 이름 텍스트 상자에 File_Compare 를 입력한 다음 열기 를 클릭하십시오. File_Compare.cpp 파일이 표시됩니다.
  11. 다음 코드를 붙여 <windows.h> File_Compare.cpp file:
    #include "form1.h"#include <windows.h>#include <tchar.h>using namespace Compare;
  12. File_Compare.cpp 파일에 다음 WinMain 함수를 추가하여:
    int APIENTRY _tWinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPTSTR    lpCmdLine,                     int       nCmdShow){}
  13. WinMain 함수에 다음 코드를 붙여:
    System::Threading::Thread::CurrentThread->ApartmentState = System::Threading::ApartmentState::STA;Application::Run(new Form1());return 0;
  14. 이 샘플에서는 저장하십시오.

샘플 실행

  1. 두 파일에서 텍스트 상자 컨트롤의 전체 경로를 제공해야 합니다.
  2. 비교 를 클릭하십시오.
참조
자세한 내용은 다음 Microsoft 개발자 네트워크 (MSDN) 웹 사이트를 방문하십시오.
System.IO 네임스페이스
FileStream 클래스 통한 파일 액세스

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 816189 - 마지막 검토: 01/17/2015 06:55:20 - 수정: 2.3

Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbhowtomaster kbhowto kbio KB816189 KbMtko
피드백