<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mundo Geek &#187; zip</title>
	<atom:link href="http://mundogeek.net/etiqueta/zip/feed/" rel="self" type="application/rss+xml" />
	<link>http://mundogeek.net</link>
	<description>Mundo geek, bitácora sobre todo lo geek: software, gadgets, tecnología, internet, ...</description>
	<lastBuildDate>Fri, 25 May 2012 14:51:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Archivos zip en C#</title>
		<link>http://mundogeek.net/archivos/2009/07/22/archivos-zip-en-c/</link>
		<comments>http://mundogeek.net/archivos/2009/07/22/archivos-zip-en-c/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 11:58:07 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[c sharp]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=3668</guid>
		<description><![CDATA[El framework .NET no incluye ninguna clase para trabajar con archivos zip fácilmente. Sí, desde la versión 3.0 tenemos disponible el espacio de nombres System.IO.Packaging, pero este no está pensado realmente para trabajar con archivos zip genéricos, sino con zips que siguen el formato Office Open XML de Microsoft (docx, pptx, xlsx, &#8230;). Tampoco puedes [...]]]></description>
			<content:encoded><![CDATA[<p>El framework .NET no incluye ninguna clase para trabajar con archivos zip fácilmente. Sí, desde la versión 3.0 tenemos disponible el espacio de nombres <code>System.IO.Packaging</code>, pero este no está pensado realmente para trabajar con archivos zip genéricos, sino con zips que siguen el formato Office Open XML de Microsoft (docx, pptx, xlsx, &#8230;).</p>
<p>Tampoco puedes usar (directamente) las clases <code>GZipStream</code> y <code>DeflateStream</code> del espacio de nombres <code>System.IO.Compression</code> ya que estas clases, introducidas en la versión 2.0 del framework, pese a lo que alguno pudiera pensar, no sirven para trabajar con archivos zip, sino con GZip y con el algoritmo <a href="http://es.wikipedia.org/wiki/Deflate" title="Algoritmo de compresión Deflate">Deflate</a>.<span id="more-3668"></span></p>
<p>Tenemos la opción de utilizar la API Windows Shell y aprovecharnos de la capacidad de las últimas versiones de Windows de trabajar con archivos ZIP, pero esto es un &#8220;hack&#8221; muy poco elegante, poco funcional, y que requiere de que el usuario utilice Windows XP o superior.</p>
<p>Otra solución que algunas personas proponen es usar el espacio de nombres <code>java.util.zip</code> de J# (Java puede trabajar con archivos ZIP de forma decente desde su versión 1.1) pero claro: no tiene nada que ver con C#, es poco funcional, implica unas enormes dependencias y J# está prácticamente muerto.</p>
<p>Visto lo visto lo mejor es acudir a las librerías de terceras partes. En este apartado tenemos varias opciones, de entre las cuales mi preferida es la librería <a href="http://www.codeplex.com/DotNetZip" title="DotNetZip">DotNetZip</a>. Otras alternativas son <a href="http://xceed.com/Zip_Net_Intro.html" title="Xceed Zip for .NET">Xceed Zip for .NET</a>, bastante interesante, pero con un precio de 399.95$ y <a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/" title="SharpZipLi">SharpZipLib</a> también muy buena, pero un poco más complicada de utilizar que DotNetZip.</p>
<p>Para poder utilizar DotNetZip primero <a href="http://dotnetzip.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=23152#ReleaseFiles" title="Descargar DotNetZip">descargamos el zip de la versión runtime</a> desde su página web, descomprimimos, y copiamos la dll de la versión reducida a la carpeta de nuestro proyecto. En Visual Studio nos dirigimos al &#8220;Explorador de soluciones&#8221; y hacemos clic con el botón derecho sobre &#8220;References&#8221;, donde seleccionamos &#8220;Agregar referencia&#8221;. En la pestaña &#8220;Examinar&#8221; seleccionamos la dll de DotNetZip (Ionic.Zip.Reduced.dll). Una vez hecho esto podremos utilizar el namespace Ionic.Zip en nuestra aplicación.</p>
<p>El uso de DotNetZip es de lo más sencillo. Para crear un zip, por ejemplo, haríamos algo como lo siguiente:</p>
<pre name="code" class="c-sharp">using Ionic.Zip;

namespace EjemploZip {
    class Program {
        static void Main(string[] args) {
            ZipFile zip = new ZipFile();

            zip.AddFile("d:\\imagen.png", "");
            zip.AddFile("d:\\texto.txt", "");
            zip.AddFile("d:\\musica.mp3", "");

            zip.Save("c:\\archivo.zip");
        }
    }
}</pre>
<p>O bien, para añadir varios archivos con una sola llamada:</p>
<pre name="code" class="c-sharp">using Ionic.Zip;

namespace EjemploZip {
    class Program {
        static void Main(string[] args) {
            string archivos[] = {"d:\\imagen.png", "d:\\texto.txt", "d:\\musica.mp3"};

            ZipFile zip = new ZipFile();

						AddFiles(archivos);

            zip.Save("c:\\archivo.zip");
        }
    }
}</pre>
<p>Para extraer el contenido de un archivo:</p>
<pre name="code" class="c-sharp">using Ionic.Zip;

namespace EjemploZip {
    class Program {
        static void Main(string[] args) {
            ZipFile zip = ZipFile.Read("d:\\archivo.zip");

            foreach (ZipEntry f in zip)
                f.Extract("d:\\", ExtractExistingFileAction.OverwriteSilently);
        }
    }
}</pre>
<p>Si necesitas más ejemplos también puedes echar un vistazo a la sección correspondiente de su página web, muy bien documentada, en <a href="http://dotnetzip.codeplex.com/Wiki/View.aspx?title=Examples">Ejemplos de DotNetZip en C#</a>.</p>
<link type="text/css" rel="stylesheet" href="http://mundogeek.net/sh/css/SyntaxHighlighter.css"></link>
<script language="javascript" src="http://mundogeek.net/sh/js/shCore.js"></script><br />
<script language="javascript" src="http://mundogeek.net/sh/js/shBrushCSharp.js"></script><br />
<script language="javascript">dp.SyntaxHighlighter.ClipboardSwf = 'http://mundogeek.net/sh/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');</script></p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2009/07/22/archivos-zip-en-c/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Descomprimir archivos en Linux desde la consola</title>
		<link>http://mundogeek.net/archivos/2007/05/10/descomprimir-archivos-en-linux-desde-la-consola/</link>
		<comments>http://mundogeek.net/archivos/2007/05/10/descomprimir-archivos-en-linux-desde-la-consola/#comments</comments>
		<pubDate>Thu, 10 May 2007 11:17:36 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[bz2]]></category>
		<category><![CDATA[consola]]></category>
		<category><![CDATA[descomprimir]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[rar]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[tgz]]></category>
		<category><![CDATA[zip]]></category>

		<guid isPermaLink="false">http://mundogeek.net/archivos/2007/05/10/descomprimir-archivos-en-linux-desde-la-consola/</guid>
		<description><![CDATA[En modo gráfico tenemos el gestor de archivadores para facilitarnos la vida. Pero, ¿cómo tratar con archivos comprimidos o empaquetados como los tgz, tar, bz2 o rar en la consola? tar Se trata de un archivo que combina varios archivos en uno, no hay compresión de datos. Para extraer el contenido usamos el comando tar [...]]]></description>
			<content:encoded><![CDATA[<p>En modo gráfico tenemos el gestor de archivadores para facilitarnos la vida. Pero, ¿cómo tratar con archivos comprimidos o empaquetados como los tgz, tar, bz2 o rar en la consola?</p>
<h2>tar</h2>
<p>Se trata de un archivo que combina varios archivos en uno, no hay compresión de datos. Para extraer el contenido usamos el comando tar con los flags x (e<strong>x</strong>tract, extraer) y f (<strong>f</strong>ile, desde un archivo), y opcionalmente v (<strong>v</strong>erbose) para mostrar por pantalla el proceso o vv para mostrar no solo los archivos y carpetas creadas, sino información sobre estas.</p>
<p class="code">tar xvf archivo.tar</p>
<p><span id="more-1072"></span></p>
<h2>gz</h2>
<p>Se trata de un archivo comprimido con gzip. Para descomprimir utilizamos el comando gzip con el flag -d (<strong>d</strong>escomprimir) o bien el comando gunzip, que no es más que un enlace a gzip.</p>
<p class="code">gunzip archivo.gz<br />
gzip -d archivo.gz</p>
<h2>tgz, tar.gz</h2>
<p>Un archivo empaquetado con tar y comprimido con gunzip. Se descomprime de la misma forma que los tar, añadiendo el flag z para indicarle que use gzip para descomprimir.</p>
<p class="code">tar xvzf archivo.tar.gz</p>
<h2>bz2</h2>
<p>Archivo comprimido con bzip2. Para descomprimir se usa el comando bzip2 con el flag -d (<strong>d</strong>escomprimir) o bien el comando bunzip2, que no es más que un enlace a bzip2.</p>
<p class="code">bunzip2 archivo.bz2<br />
bzip2 -d archivo.bz2</p>
<h2>tar.bz2</h2>
<p>Similar a los archivos tar.gz, pero se usó bzip2 para comprimirlo. Para descomprimir se usa también tar, con el flag j en lugar de z:</p>
<p class="code">tar xvjf archivo.tar.bz2</p>
<h2>zip</h2>
<p>Archivo comprimido con zip. Se descomprime usando el comando unzip:</p>
<p class="code">unzip archivo.zip</p>
<h2>rar</h2>
<p>Formato propietario de RarLab, creadores del famoso Winrar. Normalmente el comando rar no está instalado en el sistema</p>
<p class="code">sudo aptitude install rar</p>
<p>Se descomprime con el flag -x (e<strong>X</strong>tract, extraer)</p>
<p class="code">rar -x archivo.rar</p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2007/05/10/descomprimir-archivos-en-linux-desde-la-consola/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
	</channel>
</rss>

