Dagi3d v4

Mostrar el tamaño de un fichero de una manera más legible

Estaba haciendo una aplicación en rails donde necesitaba mostrar el tamaño del fichero que el usuario podía descargar. Ruby cuenta con el método File.size pero devuelve el tamaño en bytes y claro, que un archivo pese 3670016 bytes por ejemplo, no es que sea muy esclarecedor, así que añadí una función a la clase File que muestra el tamaño en la unidad más grande posible:

file_util.rb:

class File

  @@units = ['bytes', 'kb', 'mb', 'gb', 'tb']

  def File.readable_size(file_name)

    size = File.size(file_name).to_f

    pos = 0
    while size / 1024 >= 1
      size = size / 1024
      pos += 1
    end

    size = format("%.1f", size)

    return size.to_s + " " + @@units[pos] 
  end
end

Ejemplo de uso:
require 'file_util'

file_name = "foo" 
size = (1.5 * 1024 * 1024).to_i # 1.5 mb

#creamos un fichero de prueba con el tamaño indicado
File.open(file_name, "w") do 
  |file|
  size.times do
    file << 'x'
  end
end

puts File.size(file_name) # 1572864
puts File.readable_size(file_name) # 1.5 mb
Vicent
30/12/2006 19:42

Puedes usar human_size(1572864)

Deja un comentario
*: campos obligatorios. La dirección de correo no será publicada