提问人:JCCyC 提问时间:10/5/2023 最后编辑:Ken WhiteJCCyC 更新时间:10/5/2023 访问量:79
如何在打开的文件上执行 lseek 并读取 N 个字节?
How to do an lseek on an open file, and read N bytes?
问:
我想使用 Elixir 来读取具有固定长度标头的二进制文件,并且其中的数据结构具有可确定的长度。这些文件可能很大,我真的不想被迫将整个文件读入内存。也许我的搜索 fu 缺乏,但我在文档或其他地方没有找到这样的东西。
答:
3赞
Adam Millerchip
10/5/2023
#1
看起来您正在寻找:file.pread/3
。
iex(1)> File.write("example", "Hello, World")
:ok
iex(2)> file = File.open!("example")
#PID<0.111.0>
iex(5)> :file.pread(file, 7, 5)
{:ok, "World"}
iex(6)> :file.pread(file, 0, 5)
{:ok, "Hello"}
如果需要跟踪当前位置,可以使用 :file.position/2
和 :file.read/2
。
评论