Diskteki bir dosyaya yol verildiğinde, dosya boyutunu bayt cinsinden almak için en deyimsel yol nedir?Elixir'de bir dosyanın boyutunu nasıl alırsınız?
path = "/tmp/some_file.txt"
Diskteki bir dosyaya yol verildiğinde, dosya boyutunu bayt cinsinden almak için en deyimsel yol nedir?Elixir'de bir dosyanın boyutunu nasıl alırsınız?
path = "/tmp/some_file.txt"
Bu File
modülünde yerleşik stat
fonksiyonları kullanılarak, iksir elde edilir; Burada iki hakkında konuşacağım: File.stat/2
ve File.stat!/2
.
Her iki işlev de "değer" için bir %File.Stat{}
yapısını döndürür; bu, daha sonra bayt cinsinden dosya boyutunu içeren size
alanını kopyalarken desen eşleştirmesiyle yok ederiz. Fonksiyonlar sadece 1) geri dönüş ve 2) istisnaların nasıl ele alındığı (örn. Dosya bulunamadı) bakımından farklılık gösterir.
iex(1)> case File.stat path do
...(1)> {:ok, %{size: size}} -> size
...(1)> {:error, reason} -> ... # handle error
...(1)> end
1562
NB: incelikle istisnaları ele ve bir hata tuple dönmek dosya boyutu kontrolleri için
iex(1)> %{size: size} = File.stat! path
1562
: istisnalar atmak dosya boyutu kontrolleri (File.Error
) için
: Symlinks ile uğraşırken biraz farklı bir şekilde ele alan başka bir fonksiyon var. bout: File.lstat/2
& File.lstat!/2
.