Ответ 1
Это достигается в Elixir, используя встроенные функции stat
в модуле File
; здесь я расскажу о двух: File.stat/2
и File.stat!/2
.
Обе функции возвращают структуру %File.Stat{}
для своего "значения", которую мы затем разрушаем с помощью сопоставления с образцом, чтобы вырвать поле size
, которое содержит размер файла в байтах. Функции отличаются только тем, как они 1) возвращаются и 2) обрабатывают исключения (например, файл не найден).
Для проверки размера файла, которые генерируют исключения (File.Error
):
iex(1)> %{size: size} = File.stat! path
1562
Для проверки размера файла, которые обрабатывают исключения изящно и возвращают кортеж ошибок:
iex(1)> case File.stat path do
...(1)> {:ok, %{size: size}} -> size
...(1)> {:error, reason} -> ... # handle error
...(1)> end
1562
NB. Существуют другие функции, которые обрабатываются несколько иначе при работе с символическими ссылками и заслуживают внимания: File.lstat/2
и File.lstat!/2
.