[Ruby] ¿Se puede descomprimir un archivo .rar o unos cuantos?

Iniciado por Saito_25, 5 Abril 2015, 20:37 PM

0 Miembros y 1 Visitante están viendo este tema.

Saito_25

Bueno, Ruby sirve para hacer programas de escritorios o web, así que hoy, al ver que tenía que descomprimir no sé cuantos archivos, uno por uno, se me ha ocurrido la idea de si podría hacer, con ruby, un programa que, fuera descomprimiendo los archivos .rar/.zip/etc (al menos los .rar) uno por uno, es decir, que no me coja todo los archivos y los descomprima del tirón, sino que coja uno, lo descomprima, cuando esté descomprimido, descomprima otro.

A parte de saber si se puede o no, si me guiáis un poco en cómo hacerlo, os lo agradecería mucho.

Eleкtro

#1
con el módulo zlib puedes utilizar la librería zlib incluida en Ruby:
http://ruby-doc.org/stdlib-2.1.1/libdoc/zlib/rdoc/Zlib.html

Ahí tienes ejemplos de uso y toda la documentación, plus este ejemplo adicional para iterar los archivos de un TAR-GZIP:
Código (ruby) [Seleccionar]
require 'rubygems/package'
require 'zlib'
tar_extract = Gem::Package::TarReader.new(Zlib::GzipReader.open('Path/To/myfile.tar.gz'))
tar_extract.rewind # The extract has to be rewinded after every iteration
tar_extract.each do |entry|
 puts entry.full_name
 puts entry.directory?
 puts entry.file?
 # puts entry.read
end
tar_extract.close


Otra alternativa sería la librería (o gema) libarchive:
https://github.com/Hanmac/libarchive-ruby

tambien tienes ejemplos de uso en la documentación.

Aparte de todo eso hay más alternativas (cómo rubyzip, pero es muy malo), y cómo último recurso siempre podrías llamar a aplicaciones de terceros como 7Zip o WinRAR en su version commandline.

PD: Te sugiero buscar en Google antes de formular una pregunta básica, no será la primera vez que los usuarios se cansan de responder a preguntas vagas.

Saludos








Saito_25

Buscar, busqué. Pero, no encontré nada. Y si salió algo, lo más seguro es que estuviera en inglés, y no me enteré de nada.

Te agradezco la página que me has pasado, la voy a meter a Google Trasnlate, y a ver qué sale.

Por cierto, ese código casi me deja en la silla muerto del miedo.