如何在 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功能。它允许一个参数来限制文件中的字节数或字符数。
我有 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功能。它允许一个参数来限制文件中的字节数或字符数。