获取文件MD5值(大文件转换指定大小的字节)
此方法避免大文件直接转换md5时间过长问题;
/**
* @param file 文件实体
* @param readLength 读取长度(前取整,后取模)
* @return
*/
public static String readFileByte(File file,int readLength){
long start = System.currentTimeMillis();
byte[] data = null;
try {
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len;
byte[] buffer = new byte[readLength];
if ((len = fis.read(buffer)) != -1){
log.debug("读取文件前置大小:{}",len);
baos.write(buffer, 0, len);
}
fis.skip(file.length() - (file.length() % readLength));
byte[] buff = new byte[(int)(file.length() % readLength)];
log.debug("读取文件后置大小:{}",buff.length);
fis.read(buff);
baos.write(buff);
data = baos.toByteArray();
fis.close();
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
log.debug("总耗时:{}ms",System.currentTimeMillis()-start);
return DigestUtils.md5Hex(data);
}
大文件读取指定长度的字节。前取整(不足readLength取总长度),后取模。