你如何在 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
.
给定磁盘上文件的路径,以字节为单位检索文件大小的最惯用方法是什么?
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
.