FileDocCategorySizeDatePackage
TrueMirror.javaAPI DocExample1290Sun Mar 28 19:07:50 BST 1999None

TrueMirror.java

import java.net.*;
import java.io.*;
import java.security.*;


public class TrueMirror {

  public static void main(String[] args) {

    if (args.length != 2) {
      System.err.println("Usage: java TrueMirror url1 url2");
      return;
    }

    try {
      URL source = new URL(args[0]);
      URL mirror = new URL(args[1]);
      byte[] sourceDigest = getDigestFromURL(source);
      byte[] mirrorDigest = getDigestFromURL(mirror);
      if (MessageDigest.isEqual(sourceDigest, mirrorDigest)) {
        System.out.println(mirror + " is up to date");
      }
      else {
        System.out.println(mirror + " needs to be updated");
      }

    }
    catch (MalformedURLException e) {
      System.err.println(e);
    }
    catch (Exception e) {
      System.err.println(e);
    }

  }

  public static byte[] getDigestFromURL(URL u) 
   throws IOException, NoSuchAlgorithmException {
    
     MessageDigest sha = MessageDigest.getInstance("MD5");
     InputStream in = u.openStream();
     byte[] data = new byte[128];
     while (true) {
       int bytesRead = in.read(data);
       if (bytesRead < 0) { // end of stream
         break;
       }
       sha.update(data, 0, bytesRead);
     }

     return sha.digest();

  }

}