在erlang中计算文件的校验和
Computing the checksum of a file in erlang
我正在尝试使用 erlang 提供的 BIF 计算大文件的 md5 校验和:
- 二郎:md5_init()
- 二郎:md5_update()
- 二郎:md5_final()
在下面的代码中:
to_md5_large(File) ->
case file:read_file(File) of
{ok, <<A:4/binary,B/binary>>} -> md5_helper(B,erlang:md5_init(A));
{error,Reason} -> exit(Reason)
end.
md5_helper(<<A:4/binary,B>>,Acc) -> md5_helper(B,erlang:md5_update(Acc,A));
md5_helper(A,Acc) ->
B = erlang:md5_update(Acc,A),
erlang:md5_final(B).
但是似乎 md5_init() 没有被识别。当我编译一切正常时返回 {ok,module}
但是当我 运行 时我收到一条错误消息,指出上面显示的行中有一个未定义的函数 md5_init。有什么建议吗?
erlang:md5_init没有参数。
不要忘记编译时不会检查其他模块中定义的函数。
我正在尝试使用 erlang 提供的 BIF 计算大文件的 md5 校验和:
- 二郎:md5_init()
- 二郎:md5_update()
- 二郎:md5_final()
在下面的代码中:
to_md5_large(File) ->
case file:read_file(File) of
{ok, <<A:4/binary,B/binary>>} -> md5_helper(B,erlang:md5_init(A));
{error,Reason} -> exit(Reason)
end.
md5_helper(<<A:4/binary,B>>,Acc) -> md5_helper(B,erlang:md5_update(Acc,A));
md5_helper(A,Acc) ->
B = erlang:md5_update(Acc,A),
erlang:md5_final(B).
但是似乎 md5_init() 没有被识别。当我编译一切正常时返回 {ok,module}
但是当我 运行 时我收到一条错误消息,指出上面显示的行中有一个未定义的函数 md5_init。有什么建议吗?
erlang:md5_init没有参数。
不要忘记编译时不会检查其他模块中定义的函数。