直接给你个例子看看,用来判断文件是否相等.
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()));
}
}
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()));
}
}
解决方案 »
- 【求助】Hibernate 注解ManyToMany出错
- 正则表达式
- 项目从的hibernate框架从2.0升级到3.0的
- 谁能帮我解决一下啊!先谢谢了!
- bad class file format: 古怪的错误,有高手知道原因吗?
- 请教大家一个struts标签的问题
- 新手求一个输出y=sinx的applet程序
- 有谁知道weblogic7的默认有户名和密码?
- 请问对于客户端逻辑比较复杂的B/S系统,用javascript还是Applet实现较好?
- 高难问题
- 如何识别某个http请求是来自某台特定的机器?
- struts 应该是标签问题,actionform里 错误一验证,返回errors 就出错,但是我把
进行处理。
只要实现writeObject()&readObject()就可以了啊.其他一些函数是辅助的,这个类可以实现任意两个文件是否相同的比较.