我有一个文件,每次更改时都需要在我的应用程序中重新加载。
我正在检查它的 lastModified 并且我还想在处理它之前检查它的 md5sum。
我正在使用 Spring 框架,以防万一那里有什么有用的东西。
检查这个的最好方法是什么?我应该检查任何示例/库吗?
谢谢。
此链接中的解释和代码段可能会对您有所帮助
只是为了记录,在大多数使用 bigInteger 的片段中都有一个常见问题, bigInteger 类会在字符串开头删除多余的零,因此您可能需要添加这样的检查
String res =new BigInteger(1,m.digest()).toString(16);
if (res.length() == 31)
res = "0" + res;
InputStream in = new FileInputStream(filename);
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] buffer = new byte[1024];
while (true)
{
int c = in.read(buffer);
if (c > 0)
md5.update(buffer, 0, c);
else if (c < 0)
break;
}
in.close();
byte[] result = md5.digest();
您必须读取整个文件并将其提供给MessageDigest
.
您可以使用 Java 内置函数来做到这一点:
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(...your data here...);
byte[] hash = digest.digest();
或者在这里尝试另一个实现,当然更快(根据它的名字:)
编辑 :
他们似乎提供了文件 md5sum,正是您想要的!
您需要额外的便利方法来散列文件...
String hash = MD5.asHex(MD5.getHash(new File(filename)));
使用MessageDigest类,你可以在这里找到一个很好的例子。