你如何在 Elixir 中获取文件的大小?

How do you get the size of a file in Elixir?

给定磁盘上文件的路径,以字节为单位检索文件大小的最惯用方法是什么?

path = "/tmp/some_file.txt"

这是在 Elixir 中通过使用 File 模块中的内置 stat 函数实现的;这里,我先说两个:File.stat/2 and File.stat!/2.

两个函数 return 一个 %File.Stat{} 结构用于它们的“值”,然后我们通过模式匹配对其进行解构以提取包含文件大小的 size 字段,以字节为单位.这些函数的区别仅在于它们 1) return 和 2) 处理异常(例如找不到文件)的方式。

对于抛出异常的文件大小检查 (File.Error):

iex(1)> %{size: size} = File.stat! path
1562

对于优雅处理异常的文件大小检查和return错误元组:

iex(1)> case File.stat path do
...(1)>   {:ok, %{size: size}} -> size
...(1)>   {:error, reason} -> ... # handle error
...(1)> end
1562

N.B:还有其他函数在处理符号链接时处理方式略有不同,值得了解:File.lstat/2 & File.lstat!/2.