直接给你个例子看看,用来判断文件是否相等.
package src;
import java.io.Serializable;
import java.io.*;
import org.apache.commons.codec.digest.DigestUtils;/*
 * Created on 2005-8-1
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 *//**
 * @author Simon
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class ChecksumForZSDN implements Serializable {
/* (non-Javadoc)
 * @see java.lang.Object#equals(java.lang.Object)
 */

/**
 * @param fileName
 */

private String fileName="";
private File file=null;
private String checksum="";
private String outputFileName="";
public ChecksumForZSDN(String fileName)throws Exception {

this.fileName = fileName;
this.checksum="";
this.file=new File(fileName);
try
{
this.outputFileName=fileName.substring(0,fileName.indexOf("."))+".ckm";
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
//System.out.println("outputfileName:"+this.outputFileName);
}

    //get bytes from original file
private   byte[] getFileBytes()throws Exception {
try {
FileInputStream fin = new FileInputStream(file);
byte[] buffer = new byte[(int) file.length()];
fin.read(buffer);
fin.close();
return buffer;

catch (Exception e) 
{
throw e;

}

}
    //get checksum using MD5 method
 public  void generateMD5Checksum()throws Exception {
try
{
byte[] bytes = getFileBytes();
checksum = DigestUtils.md5Hex(bytes);
}
catch(Exception e)
{
e.printStackTrace();
throw e;
}
}
//get checksum 
 public  String getMD5Checksum() {
return checksum;

}
 //serialize checksum 
 private void writeObject(ObjectOutputStream s)
throws IOException {
    // Call even if there is no default serializable fields.
    s.defaultWriteObject();     // save the checksum
    s.writeObject(checksum);
            //System.out.println("write checksum:"+checksum);
    
 }
 //write checksum to file
 public void writeToFile()
 {
  try {
    FileOutputStream fo = new FileOutputStream(this.outputFileName);
    ObjectOutputStream so = new ObjectOutputStream(fo);
    //System.out.println("this's checksum"+this.checksum);
    so.writeObject(this);
    so.flush();
    so.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("exception thrown:"+e.getMessage());
    
}
 }
 //deserialize checksum 
 private void readObject(ObjectInputStream s) 
throws IOException, ClassNotFoundException 
{
   s.defaultReadObject();     // restore the checksum
  checksum = (String)s.readObject();
  //System.out.println("read checksum:"+checksum);
}
 public void readFromFile()
 {
  try {
    FileInputStream fi = new FileInputStream(this.outputFileName);
    ObjectInputStream si = new ObjectInputStream(fi);
   // System.out.println("read file:"+si);
    this.checksum =((ChecksumForZSDN) si.readObject()).getMD5Checksum();
    //System.out.println("after readFromFile():"+this.checksum);
        si.close();
       
} catch (Exception e) {
 e.printStackTrace();
}
 }
 //check whether the original checksum is equal to 
 //the new generated checksum
 public boolean equals(Object obj) {
// TODO Auto-generated method stub
 
  return (obj instanceof ChecksumForZSDN 
            && this.checksum.equals(((ChecksumForZSDN)obj).getMD5Checksum()));
}
}