filesize
filesize copied to clipboard
filesize is a small ruby class for handling filesizes with both the SI and binary prefixes, allowing conversion from any size to any other size.
This gem is no longer maintained.
filesize
filesize.rb provides a class for easily working with file sizes. That means:
- Parsing strings (e.g. "1 GiB") and saving it internally as bytes
- Handling both SI and binary prefixes
- Converting from any type and unit to any other (SI to SI, SI to Binary and so on)
- doing calculations with filesizes (in a smart way, see Usage for more)
- filesize.rb also provides some default sizes, like the ones of DVDs
Usage
Parsing a string
Filesize.from("1 GiB")
# => #<Filesize:0x93c06c8 @bytes=1073741824, @type={:regexp=>/^([\d,.]+)?\s?(?:([kmgtpezy])i)?b$/i, :multiplier=>1024, :presuffix=>"i"}>
Converting filesizes
Filesize.from("1 GiB").to_f('KiB') # => 1048576.0
Filesize.from("1 GiB").to_f('KB') # => 1073741.824
Filesize.from("1 GB").to_i # => 1000000000
Outputting filesizes
Filesize.from("12502343 B").to_s('GiB') # => "0.01 GiB"
Filesize.from("12502343 B").pretty # => "11.92 MiB"
Comparing filesizes
Filesize.from("1 KB") <=> Filesize.from("1 MB") # => -1
Calculating with filesizes
The file size on the left side sets the type
(Filesize.from("1400 MB") + Filesize.from("1400 MiB")).pretty # => "2.87 GB"
(Filesize.from("1400 MiB") + Filesize.from("1400 MB")).pretty # => "2.67 GiB"
Filesizes can also be coerced
(Filesize.from("1400 MiB") + 1024).pretty # => "1.37 GiB"
(1024 + Filesize.from("1400 MB")).pretty # => "1.40 GB"
filesize.rb is smart about the return value
Filesize.from("1400 MiB") / Filesize.from("700 MiB") # => 2.0
One can also use predefined sizes
Filesize::DVD / Filesize::CD # => 6.13566756571429