KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tonbeller > tbutils > httpunit > FileDiff


1 package com.tonbeller.tbutils.httpunit;
2
3 import java.io.BufferedReader JavaDoc;
4 import java.io.File JavaDoc;
5 import java.io.FileReader JavaDoc;
6 import java.io.IOException JavaDoc;
7
8 /**
9  * Vergleicht zwei Textfiles
10  *
11  * @author eb
12  * @since 19.05.2004
13  */

14 public class FileDiff {
15
16   public boolean equalsFiles(File JavaDoc f1, File JavaDoc f2) throws IOException JavaDoc {
17     return equalsFiles(f1, f2, new DefaultHandler());
18   }
19
20   public boolean equalsFiles(File JavaDoc f1, File JavaDoc f2, FileDiffHandler h) throws IOException JavaDoc {
21     FileDiffHandler handler = h == null ? new DefaultHandler() : h;
22
23     System.out.println("Comparing ");
24     System.out.println("> " + f1);
25     System.out.println("< " + f2);
26     
27     BufferedReader JavaDoc fr1 = null;
28     try {
29       fr1 = new BufferedReader JavaDoc(new FileReader JavaDoc(f1));
30       BufferedReader JavaDoc fr2 = null;
31       try {
32         fr2 = new BufferedReader JavaDoc(new FileReader JavaDoc(f2));
33         int line = 0;
34         int errCnt = 0;
35         while (errCnt<10) {
36           line++;
37           String JavaDoc line1 = handler.prepareLine(fr1.readLine());
38           String JavaDoc line2 = handler.prepareLine(fr2.readLine());
39
40           if (!equalsLines(line1, line2)) {
41             System.out.println("Lines different at " +line);
42             System.out.println("> " + line1);
43             System.out.println("< " + line2);
44             errCnt++;
45           }
46
47           if (line1 == null)
48             break;
49         }
50         return errCnt==0;
51       } finally {
52         if (fr2 != null)
53           fr2.close();
54       }
55     } finally {
56       if (fr1 != null)
57         fr1.close();
58     }
59   }
60
61   private boolean equalsLines(String JavaDoc line1, String JavaDoc line2) {
62     if (line1 == line2)
63       return true;
64     if (line1 == null)
65       return false;
66
67     return line1.equals(line2);
68   }
69
70   public interface FileDiffHandler {
71
72     public String JavaDoc prepareLine(String JavaDoc line);
73   }
74
75   static class DefaultHandler implements FileDiffHandler {
76
77     public String JavaDoc prepareLine(String JavaDoc line) {
78       if (line == null)
79         return null;
80       return line.trim();
81     }
82
83   }
84 }
Popular Tags