Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  •  普罗旺斯
  • 负责帅就完事了
  • 写了1,496,113字

该文章投稿至Nemo社区   Java  板块 复制链接


JAVA获取文件的MD5值

发布于 2016/04/02 23:31 1,532浏览 0回复 2,003


文件的MD5值也就相当于一个文件的唯一标识,具有唯一性。

每个文件都有一个唯一的MD5值。


所以这里考虑,用户上传一个文件的时候,我们首先会或许这个上传文件的MD5值,再匹配之前上传的文件的MD5值,如果已经有人上传了这同一个文件,那么我们就把之前上传的文件地址取出,并且加一个映射到这个新文件的路径,而不必确实把这个新上传的文件保存到本地。

这样可能会比较有益于控制服务器端磁盘的占用。


这里在网络上找了一个JAVA获取文件MD5值的工具,源代码贴出来,留着备用:

==========================

package cdm;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.math.BigInteger;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;

import org.apache.commons.codec.digest.*; 
import org.apache.commons.io.IOUtils;

public class testMD5 {

public static String getMd5ByFile(File file) throws FileNotFoundException {
       String value = null;
       FileInputStream in = new FileInputStream(file);
try {
   MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());
   MessageDigest md5 = MessageDigest.getInstance("MD5");
   md5.update(byteBuffer);
   BigInteger bi = new BigInteger(1, md5.digest());
   value = bi.toString(16);
} catch (Exception e) {
   e.printStackTrace();
} finally {
           if(null != in) {
           try {
       in.close();
   } catch (IOException e) {
       e.printStackTrace();
   }
   }
}
return value;
   }
 
public static void main(String[] args) throws IOException {

String path="E:\\commons-codec-1.9-bin.zip";

String v = getMd5ByFile(new File(path));
System.out.println("MD5:"+v.toUpperCase());

FileInputStream fis= new FileInputStream(path);  
String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));  
IOUtils.closeQuietly(fis);  
System.out.println("MD5:"+md5); 

//System.out.println("MD5:"+DigestUtils.md5Hex("WANGQIUYUN"));
}

}

=============================

这个工具需要依赖

org.apache.commons.codec.digest

这个包可以在

http://commons.apache.org/proper/commons-codec/download_codec.cgi

下载到。


本文标签
 {{tag}}
点了个评