我有以下(非常讨厌)代码段,该代码段在项目内容上生成了md5-hash:
protected String createHashFromContentNew() throws CrawlerException {
final StringBuilder builder = new StringBuilder();
if (getContent() != null) {
builder.append(new String(getContent()));
}
if (builder.length() == 0) {
throw new CrawlerException(hashErrorMessage("the content of this item is empty!"));
} else {
return MD5Utils.generateMD5Hash(builder.toString());
}
}
MD5Utils.generateMD5Hash(builder.toString());
函数也可以与InputStream
一起使用。
getContent()
返回一个byte[]
。
在我收到内容很大的物品之前,这实际上行得通。由于它是在多线程环境中使用的,因此通过多次保存内容会占用大量RAM。
我现在想将generateMD5Hash()
与InputStream一起使用,以停止将所有内容加载到RAM中。问题在于,对于所有先前生成的哈希,即将到来的哈希必须与当前函数中的哈希相同。
有什么想法如何以适当的方式实现这一目标吗?