2013-02-12 2 views
0

두 파일을 비교할 때 소스 코드의 버전과 예를 들어 업데이트 된 버전을 비교하는 방법과 비슷합니다. 나는 여전히 느린 코더이다. -S. 여기에있는 나의 문제는 올바르게 설계하는 것이므로, 어떻게 들어가면 좋을지 알려주고 너무 복잡하지 않기를 바랍니다.두 파일의 내용 비교, 차이 표시

그래서 현재 내 계획은 두 파일을 별도의 텍스트 상자 (?)로로드하는 것입니다. 두 스트림을 두 개의 arraylists로 나누어 스트림을 읽고 배열리스트를 서로 비교하십시오. 파일 크기 등에 대한 추가 검사가 필요합니다.

비교할 텍스트 상자를 순환하여 어떻게 차이가 있는지 빨간색으로 강조 표시하려면 어떻게해야합니까? 내가 어떻게 할 수 있을지 전혀 모르겠다.

두 개의 배열 (요소 11)의 차이점을 읽고 해당 데이터 위치/요소를 강조 표시 하시겠습니까?

+3

WinDiff를 얻고 코딩 할 필요가 없습니다. (: .. 문제 자체는 실제로 꽤 복잡하고 많은 옵션이 있습니다 : 공백 무시, 대소 문자 무시, 줄 바꿈, 재정렬 된 단어 ... –

답변

4

학습 경험으로하지 않는 한, 기존 구현을 활용하는 것이 좋습니다 ... 바퀴를 다시 발명하지 마십시오. 파일을 효율적으로 차별화하는 것은 쉬운 일이 아닙니다.

당신은 DLL로와 C#을 컴파일 한 다음 VB.Net 프로젝트에서 DLL을 사용할 수있는 구글의 DIFF 매치 패치

http://code.google.com/p/google-diff-match-patch/

의 C#을 포트가 있습니다.

복잡한 주제로 배우는 것이 목적이라면, 기존 구현을 연구하는 것이 좋습니다.

+0

두 가지 대답 모두 – Jonny

2

파일을 비교할 수 있도록 파일의 내용을 표시하지 않아도됩니다. 당신이 그들을 비교하는 내용과 LINQ 쿼리를 읽을 수있는 클래스 System.IO.File에서 방법을 사용할 수 있습니다

다음은 간단하고 짧은 접근 방식 :

Dim f1Lines = System.IO.File.ReadLines(file1Path) 
Dim f2Lines = System.IO.File.ReadLines(file1Path) 
Dim inFile1Only = f1Lines.Except(f2Lines) 
Dim inFile2Only = f2Lines.Except(f1Lines) 
Dim sameInBoth = f1Lines.Intersect(f2Lines) 

서로 다른 텍스트 상자에 결과를 표시 할 수있다.

TxtSame.Lines = sameInBoth.ToArray() 

을 사용하면 TextBox에 줄을 할당 할 수 있습니다.

+2

라인 순서는 어떻습니까? – Neolisk