1. 获取文件MD5
private String getFileMd5(File file) {
if(file == null || !file.exists()) {
return null;
}
String value = null;
try {
InputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
MessageDigest md5 = MessageDigest.getInstance("MD5");
int numRead = 0;
while ((numRead = fis.read(buffer)) > 0) {
md5.update(buffer, 0, numRead);
}
if(null != fis) {
fis.close();
}
BigInteger bi = new BigInteger(1, md5.digest());
value = bi.toString(16);
}catch(Exception e) {
e.printStackTrace();
}
return value;
}
注:别使用
NIO的FileChannel.map 方法,MappedByteBuffer 已经在系统内占用了一个句柄,而使用 FileChannel.close 方法是无法释放这个句柄的,且FileChannel有没有提供类似 unmap 的方法,因此会出现无法删除文件的情况
2.判断字符串是否为数字 -- 坑
if(StringUtils.isNumeric(str)) {
Long.valueOf(str);
}
以上小段我们经常会这么做,但当str=“”时,StringUtils.isNumeric()会返回true,而Long.valueOf()会报异常,所以,改为用NumberUtils.isNumber()即可:
if(NumberUtils.isNumber(str)) {
Long.valueOf(str);
}