从 ram 文件中读取行

  • 本文关键字:读取 文件 ram erlang
  • 更新时间 :
  • 英文 :


我正在尝试从 ram 文件中读取数据(跳过前面的一些行),但函数ram_file:read_line/1似乎未实现:

Eshell V5.9.2  (abort with ^G)
1> Data = "first line
1> second_line".
"first linensecond_line"
2> {ok, File} = file:open(Data, [ram]).
{ok,{file_descriptor,ram_file,#Port<0.504>}}
3> file:read_line(File).
** exception error: undefined function ram_file:read_line/1

我尝试使用指定的其他模式打开文件:rawreadread_ahead ,但它返回{error,badarg}

我知道我可以将数据读入缓冲区并迭代它,但是有没有另一种方法可以做到这一点?

以下是打开,写入,读取和关闭RAM文件的方法。

main (IOdata) ->
    {ok, Fd} = file:open("bla", [ram,write,read,binary]),
    ok = file:write(Fd, IOdata),
    {ok, Str} = file:pread(Fd, 0, 8192),
    ok = file:close(Fd),
    Str.

您正在寻找的功能是 file:pread/3

ram_file:read_line/1似乎没有在OTP中实现。如果您只处理"ram 数据",或者使用 io:get_line/1 在模块ram_file中实现read_line,我唯一能建议的是使用 io:get_line/1

最新更新