:prim_file
read and read_line
file_path = "./data/measurements.10000.txt"
{:ok, file} = :prim_file.open(file_path, [:raw, :read, :binary])
{:ok, data} = :prim_file.read(file, 1024)
{:ok, data} = :prim_file.read(file, 1024)
{:ok, data} = :prim_file.read_line(file)
{:ok, data} = :prim_file.read(file, 1024)
byte_size(data)
reading full file
defmodule FileReader do
@file_path file_path
def read() do
{:ok, file} = :prim_file.open(@file_path, [:raw, :read, :binary])
do_read(file, 1024 * 1024, [])
end
def do_read(file, chunk_size, acc) do
case :prim_file.read(file, chunk_size) do
:eof ->
:prim_file.close(file)
Enum.reverse(acc)
{:ok, data} ->
do_read(file, chunk_size, [data | acc])
end
end
end
[data] = FileReader.read()
data |> byte_size()
:binary.split(data, "\n", [:global])
File.read!(file_path) |> byte_size()