我有一个像checkin&签出文件。然后,如果用户签入文档,是新签入还是现有签入文档,如何管理和检查。在什么文件属性我们可以区分这个。我不想使用lastModifiedTime,Size或文件名。请告诉我。感谢..
答案 0 :(得分:1)
当我有这样的事情要做时,我尝试使用MD5哈希(在perl中)。我认为这可能会有所帮助: How can I generate an MD5 hash?
答案 1 :(得分:0)
md5文件编码可以帮助您解决此问题。 This is一个如何获取MD5值的工作示例。
public static void main(String[] args)throws Exception
{
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream("c:\\loging.log");
byte[] dataBytes = new byte[1024];
int nread = 0;
while ((nread = fis.read(dataBytes)) != -1) {
md.update(dataBytes, 0, nread);
};
byte[] mdbytes = md.digest();
//convert the byte to hex format method 1
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mdbytes.length; i++) {
sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1));
}
System.out.println("Digest(in hex format):: " + sb.toString());
//convert the byte to hex format method 2
StringBuffer hexString = new StringBuffer();
for (int i=0;i<mdbytes.length;i++) {
String hex=Integer.toHexString(0xff & mdbytes[i]);
if(hex.length()==1) hexString.append('0');
hexString.append(hex);
}
System.out.println("Digest(in hex format):: " + hexString.toString());
}
输出:
Digest(in hex format):: e72c504dc16c8fcd2fe8c74bb492affa
Digest(in hex format):: e72c504dc16c8fcd2fe8c74bb492affa
您需要做的是将旧MD5值与新MD5值进行比较,如果它对应,则不对文件进行任何更改