<?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>zip | www.valeriofinazzo.it</title>
	<atom:link href="http://www.valeriofinazzo.it/wordpress/tag/zip/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.valeriofinazzo.it/wordpress</link>
	<description>Il sito dell&#039;ingegnere Valerio Finazzo</description>
	<lastBuildDate>Fri, 30 Oct 2020 16:39:22 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.11</generator>
	<item>
		<title>TUTORIAL GOLANG &#8211; LEGGERE ARCHIVI</title>
		<link>http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-leggere-archivi/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sun, 25 Oct 2020 16:48:28 +0000</pubDate>
				<category><![CDATA[GOLANG]]></category>
		<category><![CDATA[golang]]></category>
		<category><![CDATA[zip]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=645</guid>

					<description><![CDATA[<p>Dopo aver visto come creare dei file zip vediamo come poter effettuare la lettura e lo spacchettamento di un file zip. Ipotizziamo di avere un file zip sotto la directory download, vogliamo leggerlo e scompattarlo nella directory dove lanciamo la routine go. A questo punto creiamo una directory rdt con permessi di scrittura Infine scorriamo &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-leggere-archivi/" class="more-link">Continua la lettura di <span class="screen-reader-text">TUTORIAL GOLANG &#8211; LEGGERE ARCHIVI</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-leggere-archivi/">TUTORIAL GOLANG – LEGGERE ARCHIVI</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p>Dopo aver visto come creare dei file zip vediamo come poter effettuare la lettura e lo spacchettamento di un file zip.</p>



<p>Ipotizziamo di avere un file zip sotto la directory download, vogliamo leggerlo e scompattarlo nella directory dove lanciamo la routine go.</p>



<pre class="crayon-plain-tag">reader, err := zip.OpenReader(&quot;C:\\Users\\Valerio\\Downloads\\rdt.zip&quot;)
	if err != nil {
		fmt.Println(&quot;Errore: &quot;, err)
	}</pre>



<p>A questo punto creiamo una directory rdt con permessi di scrittura</p>



<pre class="crayon-plain-tag">err = os.Mkdir(&quot;rdt&quot;, 0755)
	if err != nil {
		fmt.Println(&quot;Errore: &quot;, err)
	}</pre>



<p>Infine scorriamo l&#8217;elenco dei file presenti all&#8217;interno dello zip, li leggiamo e li copiamo all&#8217;interno della directory appena generata</p>



<pre class="crayon-plain-tag">fileszip := reader.File
	for _, fil := range fileszip {
		singlereader, _ := fil.Open()
		newpath := filepath.Join(&quot;rdt&quot;, fil.Name)
		newfile, _ := os.Create(newpath)
		io.Copy(bufio.NewWriter(newfile), singlereader)
	}</pre>



<p>In questo esempio di nuovo vediamo il pakage filepath che ci permette di costruire dei percorsi sul file system con la function Join che concatena i percorsi ricevuti.</p>



<p>Alla prossima</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-leggere-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20LEGGERE%20ARCHIVI" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-leggere-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20LEGGERE%20ARCHIVI" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-leggere-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20LEGGERE%20ARCHIVI" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-leggere-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20LEGGERE%20ARCHIVI" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-leggere-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20LEGGERE%20ARCHIVI" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-leggere-archivi%2F&#038;title=TUTORIAL%20GOLANG%20%E2%80%93%20LEGGERE%20ARCHIVI" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-leggere-archivi/" data-a2a-title="TUTORIAL GOLANG – LEGGERE ARCHIVI"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-leggere-archivi/">TUTORIAL GOLANG – LEGGERE ARCHIVI</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>TUTORIAL GOLANG &#8211; GENERARE ARCHIVI</title>
		<link>http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-gestire-archivi/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sun, 04 Oct 2020 15:59:53 +0000</pubDate>
				<category><![CDATA[GOLANG]]></category>
		<category><![CDATA[golang]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[zip]]></category>
		<guid isPermaLink="false">http://www.valeriofinazzo.it/wordpress/?p=640</guid>

					<description><![CDATA[<p>Golang mette a disposizione i package tar e zip per gestire le operazioni comuni di creazione archivi e la loro compressione. Il package tar consente di raggruppare in un unico file tutti i file contenuti in una directory mentre il package zip consente di effettuare la compressione dei dati. Vediamo come creare un tar e &#8230; <a href="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-gestire-archivi/" class="more-link">Continua la lettura di <span class="screen-reader-text">TUTORIAL GOLANG &#8211; GENERARE ARCHIVI</span> <span class="meta-nav">&#8594;</span></a></p>
The post <a href="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-gestire-archivi/">TUTORIAL GOLANG – GENERARE ARCHIVI</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></description>
										<content:encoded><![CDATA[<p>Golang mette a disposizione i package tar e zip per gestire le operazioni comuni di creazione archivi e la loro compressione. Il package tar consente di raggruppare in un unico file tutti i file contenuti in una directory mentre il package zip consente di effettuare la compressione dei dati.</p>



<p>Vediamo come creare un tar e un file zip. In particolare consideriamo una cartella e mettiamo il contenuto della cartella in un file tar e in un file zip</p>



<pre class="crayon-plain-tag">package main

import (
	&quot;archive/tar&quot;
	&quot;archive/zip&quot;
	&quot;fmt&quot;
	&quot;io/ioutil&quot;
	&quot;os&quot;
)

func main() {
	fmt.Println(&quot;Start&quot;)

	filetar, err := os.Create(&quot;../mytar.tar&quot;)
	filezip, err := os.Create(&quot;../mytar.zip&quot;)

	if err != nil {
		fmt.Println(&quot;Errore: &quot;, err)
	}
	writerTar := tar.NewWriter(filetar)
	writerZip := zip.NewWriter(filezip)

	defer writerTar.Close()
	defer writerZip.Close()

	files, err := ioutil.ReadDir(&quot;.&quot;)
	for _, singlefile := range files {
		if !singlefile.IsDir() {
			content, _ := ioutil.ReadFile(singlefile.Name())
			hdr := &amp;amp;tar.Header{
				Name: singlefile.Name(),
				Size: singlefile.Size(),
			}
			err = writerTar.WriteHeader(hdr)
			writerTar.Write(content)

			wr, _ := writerZip.Create(singlefile.Name())
			wr.Write(content)
		}
	}

	fmt.Println(&quot;End&quot;)
}</pre>



<p>Tramite la fucntion Create creo sia il file tar che il file zip e per ognuno di essi genero un writer. Tramite il comando defer mi assicuro che la chiusura del writer venga effettuato alla fine di tutti i miei comandi.</p>



<p>Tramite la funcion readDir recupero tutti i file della directory corrente, genero l&#8217;header per il tar che inizializzo con il nome e la size del file che sto provessando e finalmente posso scrivere tramite il writer sia l&#8217;header che il contenuto del file.</p>



<p>Per lo zip il giro è ancora più semplice perchè non è obbligatorio il passaggio dell&#8217;header.</p>



<p>Nel prossimo articolo vedremo come leggere e recuperare i dati dai miei archivi.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-gestire-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20GENERARE%20ARCHIVI" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-gestire-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20GENERARE%20ARCHIVI" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-gestire-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20GENERARE%20ARCHIVI" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-gestire-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20GENERARE%20ARCHIVI" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_google_gmail" href="https://www.addtoany.com/add_to/google_gmail?linkurl=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-gestire-archivi%2F&amp;linkname=TUTORIAL%20GOLANG%20%E2%80%93%20GENERARE%20ARCHIVI" title="Gmail" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.valeriofinazzo.it%2Fwordpress%2F2020%2F10%2Ftutorial-golang-gestire-archivi%2F&#038;title=TUTORIAL%20GOLANG%20%E2%80%93%20GENERARE%20ARCHIVI" data-a2a-url="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-gestire-archivi/" data-a2a-title="TUTORIAL GOLANG – GENERARE ARCHIVI"></a></p>The post <a href="http://www.valeriofinazzo.it/wordpress/2020/10/tutorial-golang-gestire-archivi/">TUTORIAL GOLANG – GENERARE ARCHIVI</a> first appeared on <a href="http://www.valeriofinazzo.it/wordpress">www.valeriofinazzo.it</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
