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

Dar*_*ody 14 elixir

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

path = "/tmp/some_file.txt"
Run Code Online (Sandbox Code Playgroud)

Dar*_*ody 16

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

这两个函数都%File.Stat{}为它们的"值" 返回一个结构,然后我们通过模式匹配对其进行解构,以获取size包含文件大小的字段(以字节为单位).这些函数仅在1)返回和2)处理异常(例如,未找到文件)方面有所不同.

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

iex(1)> %{size: size} = File.stat! path
1562
Run Code Online (Sandbox Code Playgroud)

对于正常处理异常并返回错误元组的文件大小检查:

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

注意:在处理符号链接时,还有其他功能处理方式略有不同,值得了解:File.lstat/2&File.lstat!/2.