查找 Elixir/Erlang 内存文件的长度?

jwf*_*arn 5 elixir erlang-otp

在 Elixir(或 Erlang)中,如果我有一个内存文件,我如何找到它的长度(以字节为单位)?

{:ok, fd} = :file.open("", [:ram, :read, :write])
:file.write(fd, "hello")
Run Code Online (Sandbox Code Playgroud)

jwf*_*arn 3

不确定是否有更好的方法,但这就是我所做的:

def get_length(fd) do
  {:ok, cur} = :file.position(fd, {:cur, 0})
  try do
    :file.position(fd, {:eof, 0})
  after
    :file.position(fd, cur)
  end
end
Run Code Online (Sandbox Code Playgroud)

用法:

{:ok, fd} = :file.open("", [:ram, :read, :write])
:ok = :file.write(fd, "hello")
{:ok, len} = get_length(fd)
Run Code Online (Sandbox Code Playgroud)