如何在 Elixir(或 Erlang)中读取文件的一部分?
How to read a portion of a file in Elixir (or Erlang)?
我们如何才能只读取文件的选定部分?
像这样:Read(file, start, length)
您可以使用 :file.position/2
and :file.read/2
.
有:
$ seq 10 > 10.txt
和代码:
{:ok, file} = :file.open("10.txt", [:read, :binary])
:file.position(file, 5)
IO.inspect :file.read(file, 10)
输出为:
{:ok, "\n4\n5\n6\n7\n8"}
这是从第 6 个字节开始的 10 个字节。
如果你阅读 documentation. For example file:pread/2,3
.
会很方便
read(File, Start, Length) ->
{ok, F} = file:open(File, [binary]),
try file:pread(F, [{Start, Length}]) of
{ok, [Data]} -> Data
after file:close(F)
end.
这将是 Hynek 共享的转录到 Elixir 的代码。我只 post 它作为答案,因为它的评论有点长。
def read(file, start, length) do
{ok, f} = :file.open(file, [:binary])
{ok, data} = :file.pread(f, start, length)
:file.close(f)
data
end
是的,如果将它包含在 Elixir 文件模块中就好了。如果你真的想要它@CharlesO,你为什么不继续创建一个拉取请求? Jose 和其他核心提交者是我 运行 在多年的软件开发过程中接触过的最友好的人。
我们如何才能只读取文件的选定部分?
像这样:Read(file, start, length)
您可以使用 :file.position/2
and :file.read/2
.
有:
$ seq 10 > 10.txt
和代码:
{:ok, file} = :file.open("10.txt", [:read, :binary])
:file.position(file, 5)
IO.inspect :file.read(file, 10)
输出为:
{:ok, "\n4\n5\n6\n7\n8"}
这是从第 6 个字节开始的 10 个字节。
如果你阅读 documentation. For example file:pread/2,3
.
read(File, Start, Length) ->
{ok, F} = file:open(File, [binary]),
try file:pread(F, [{Start, Length}]) of
{ok, [Data]} -> Data
after file:close(F)
end.
这将是 Hynek 共享的转录到 Elixir 的代码。我只 post 它作为答案,因为它的评论有点长。
def read(file, start, length) do
{ok, f} = :file.open(file, [:binary])
{ok, data} = :file.pread(f, start, length)
:file.close(f)
data
end
是的,如果将它包含在 Elixir 文件模块中就好了。如果你真的想要它@CharlesO,你为什么不继续创建一个拉取请求? Jose 和其他核心提交者是我 运行 在多年的软件开发过程中接触过的最友好的人。