我正在尝试编写一个 Erlang 函数,该函数接受二进制文件列表并将它们打包成一个二进制文件。 查看标准库中的
erl_tar
,似乎create
函数只接受文件名,而不是二进制文件,所以我的计划是使用open
和add
来实现该功能。
不幸的是,我似乎也无法让 open
功能正常工作。
我尝试打开二进制文件进行写入的最小示例:
case erl_tar:open({binary, <<>>}, [write, compressed]) of
{ok, _Td} -> io:put_chars("Opened binary")
end.
导致运行时错误:
runtime error: Erlang error
No Erlang function clause matched the arguments it was called with.
stacktrace:
erl_tar.open1 erl_tar.erl:579
查看erl_tar的文档和源,我认为这可能是一个错误?我不完全是一个爱兰格。
我会提出一个问题,但与此同时,如果有人知道如何在 erlang 中将 tarfile 打包到内存中,它就会解锁我。
不要使用
create
函数,使用较低级别的接口: init
函数允许您指定应如何处理数据。该文档包含一个示例,展示如何使用 init
写入文件,调整它以便您构建一个二进制文件。然后使用 add
将文件添加到存档,然后使用 close
完成。