Diff.java [Last ned]

/*
 * Programmet sammenligner to tekstfiler. Finner
 * og skriver ut linjer som er forksjellige.
 */
import java.io.*;
import java.util.*;
import static javax.swing.JOptionPane.*;
 
public class Diff {
 
  public static void main(String[] args) {
	// 'ut' er en felles sluttmelding til brukeren
    String ut = "Sammenliknede filer" + "\n";
 
    try {
      String filnavn = showInputDialog("Gi filnavn (fil nr 1):");
      File fil = new File(filnavn);
      Scanner leser1 = new Scanner(fil, "utf8");
      // NB! Det kan være norske bokstaver på filene, og da
      // er info om filens tegnsett en mulig parameter til
      // Scanner-konstruktøren.
      ut += "Fil nr 1: " + filnavn;
 
      filnavn = showInputDialog("Gi filnavn (fil nr 2):");
      fil = new File(filnavn);
      Scanner leser2 = new Scanner(fil, "utf8");
      ut += "Fil nr 2: " + filnavn;
      // Da er begge datastrømmene åpne
 
      int antUlike = 0;
      String ulikeLinjer = "";
      int linjeNr = 0;
      while ( leser1.hasNextLine() ) {
        String linjeFra1 = leser1.nextLine();
        String linjeFra2 = leser2.nextLine();
        linjeNr++;
        if ( !linjeFra1.equals(linjeFra2) ) {
          antUlike++;
          ulikeLinjer += linjeNr + ": " + linjeFra1 + "\n"
                       + linjeNr + ": " + linjeFra2 + "\n\n";
        }
      }
      if ( antUlike > 0 ) {
        ut += "Følgende linjer var ulike: " +
              "\n" + ulikeLinjer +
              "\n" + "Antall ulike linjer: " + antUlike;
      }
      else
        ut += "Ingen linjer var ulike! Ant.linjer = "+linjeNr;
    }
    catch (Exception e) {
      ut = "Filsammenlikningen lot seg ikke utføre!";
    }
    showMessageDialog(null, ut);
  }
}
Kildekode blir vist ved hjelp av GeSHi.