{"id":640,"date":"2020-10-04T17:59:53","date_gmt":"2020-10-04T15:59:53","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=640"},"modified":"2020-10-30T17:39:22","modified_gmt":"2020-10-30T16:39:22","slug":"tutorial-golang-gestire-archivi","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2020\/10\/tutorial-golang-gestire-archivi\/","title":{"rendered":"TUTORIAL GOLANG &#8211; GENERARE ARCHIVI"},"content":{"rendered":"\n<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>\n\n\n\n<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>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n\t\"archive\/tar\"\n\t\"archive\/zip\"\n\t\"fmt\"\n\t\"io\/ioutil\"\n\t\"os\"\n)\n\nfunc main() {\n\tfmt.Println(\"Start\")\n\n\tfiletar, err := os.Create(\"..\/mytar.tar\")\n\tfilezip, err := os.Create(\"..\/mytar.zip\")\n\n\tif err != nil {\n\t\tfmt.Println(\"Errore: \", err)\n\t}\n\twriterTar := tar.NewWriter(filetar)\n\twriterZip := zip.NewWriter(filezip)\n\n\tdefer writerTar.Close()\n\tdefer writerZip.Close()\n\n\tfiles, err := ioutil.ReadDir(\".\")\n\tfor _, singlefile := range files {\n\t\tif !singlefile.IsDir() {\n\t\t\tcontent, _ := ioutil.ReadFile(singlefile.Name())\n\t\t\thdr := &amp;tar.Header{\n\t\t\t\tName: singlefile.Name(),\n\t\t\t\tSize: singlefile.Size(),\n\t\t\t}\n\t\t\terr = writerTar.WriteHeader(hdr)\n\t\t\twriterTar.Write(content)\n\n\t\t\twr, _ := writerZip.Create(singlefile.Name())\n\t\t\twr.Write(content)\n\t\t}\n\t}\n\n\tfmt.Println(\"End\")\n}<\/pre>\n\n\n\n<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>\n\n\n\n<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>\n\n\n\n<p>Per lo zip il giro \u00e8 ancora pi\u00f9 semplice perch\u00e8 non \u00e8 obbligatorio il passaggio dell&#8217;header.<\/p>\n\n\n\n<p>Nel prossimo articolo vedremo come leggere e recuperare i dati dai miei archivi.<\/p>\n","protected":false},"excerpt":{"rendered":"<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 &hellip; <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\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[148],"tags":[132,146,147],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/640"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=640"}],"version-history":[{"count":4,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/640\/revisions"}],"predecessor-version":[{"id":644,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/640\/revisions\/644"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=640"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=640"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=640"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}