0

我有一个文件,每次更改时都需要在我的应用程序中重新加载。

我正在检查它的 lastModified 并且我还想在处理它之前检查它的 md5sum。

我正在使用 Spring 框架,以防万一那里有什么有用的东西。

检查这个的最好方法是什么?我应该检查任何示例/库吗?

谢谢。

4

5 回答 5

2

链接中的解释和代码段可能会对您有所帮助

只是为了记录,在大多数使用 bigInteger 的片段中都有一个常见问题, bigInteger 类会在字符串开头删除多余的零,因此您可能需要添加这样的检查

    String res =new BigInteger(1,m.digest()).toString(16);
    if (res.length() == 31)
          res = "0" + res;
于 2010-11-15T17:33:36.357 回答
1
    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();
于 2010-11-15T17:42:39.633 回答
0

您必须读取整个文件并将其提供给MessageDigest.

于 2010-11-15T17:31:01.297 回答
0

您可以使用 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)));
于 2010-11-15T17:33:16.243 回答
0

使用MessageDigest类,你可以在这里找到一个很好的例子。

于 2010-11-15T18:13:32.500 回答