如何在 Erlang 中读取大小为 6GB 的文本文件?

How can I read a text file with size 6GB in Erlang?

我有 6 GB 的文本文件。我想读取这个文件并解析每一行的数据并将其保存在我的数据库中。但由于内存问题,不可能一次处理整个 6 GB 文件。那么如何逐块读取数据然后处理呢?

像这样:

process_file(Filename) ->
    {ok, F} = file:open(Filename, [read]),
    process_lines(F).

process_lines(F) ->
    case file:read_line(F) of
        {ok, Line} ->
            %% do something with Line
            process_lines(F);
        eof ->
            file:close(F)
    end.

也许你可以试试read功能。它允许一个参数来限制文件中的字节数或字符数。