This is a creation in Article, where the information may have evolved or changed.
1. Read write to tar file
Package Mainimport ("Archive/tar" "FMT" "OS" "Bufio" "io") func readFile (path string) string{var conten T string = "" File,err: = OS. Open (PATH) if err! = nil{FMT. Printf ("%v", err) return ""} Defer file. Close () Inputreader: = Bufio. Newreader (file) for{Inputstring,err: = inputreader.readstring (' \ n ') content + = InputString If err = = Io. eof{break}} return Content}func tarpackage (tarfilename string,tarfilelist []string,rootpath str ing) {fw,err: = os. Create (rootpath+ "/" +tarfilename) if err! = nil{FMT. Printf ("%v", err) return} defer FW. Close () TW: = tar. Newwriter (FW) defer TW. Close () for _,fileitem: = Range tarfilelist{Body: = ReadFile (rootpath+ "/" +fileitem) HDR: = &tar. header{Name:fileitem, mode:0600, Size:int64 (len),} if err: = tw. Writeheader (HDR); Err! = nil{FMT. Printf ("%v", err) return} if _,err: = tw. Write ([]byte (body)); Err! = nil{FMT. Printf ("%v", Err) return}} FMT. Println ("done!")} Func Tarreader (Tarfilename string) {fw,err: = os. Open (tarfilename) If err! = nil{FMT. Printf ("%v", err) return} defer FW. Close () tr: = tar. Newreader (FW) for{Hdr,err: = tr. Next () If err = = Io. eof{break} If Err! = nil{FMT. Printf ("%v", err) continue} FMT. PRINTLN ("FileName:" +hdr. Name)}}func Main () {tarfilename: = "Test.tar"//tarfilelist: = []string{"1", "2", "3"} RootPath: = "/home/pijin G/goworkspace/gocode "//tarpackage (Tarfilename,tarfilelist,rootpath) Tarreader (rootpath+"/"+tarFileName)}
2. Read write to zip file
Package Mainimport ("io" "archive/zip" "FMT" "OS" "Bufio") Func readFile (path string) string{var conten T string = "" File,err: = OS. Open (PATH) if err! = nil{FMT. Printf ("%v", err) return ""} Defer file. Close () Inputreader: = Bufio. Newreader (file) for{Inputstring,err: = inputreader.readstring (' \ n ') content + = InputString If err = = Io. eof{break}} return Content}func ZipPackage (zipfilename string,zipfilelist []string,rootpath str ing) {fw,err: = os. Create (rootpath+ "/" +zipfilename) if err! = nil{FMT. Printf ("%v", err) return} defer FW. Close () ZW: = Zip. Newwriter (FW) defer ZW. Close () for _,fileitem: = Range zipfilelist{Body: = ReadFile (rootpath+ "/" +fileitem) F,err: = ZW. Create (Fileitem) If err! = nil{FMT. Printf ("%v", err) Continue} _,err1: = F.write ([]byte (body)) if err1! = nil{FMT .Printf ("%v", ERR1) Continue}} FMT. Println ("done!")} Func Zipreader (Zipfilename string) {r,err: = zip. Openreader (zipfilename) If err! = nil{FMT. Printf ("%v", err) return} defer R.close () for _,f: = Range r.file{FMT. Println ("File:" +f.name)}}func main () {zipfilename: = "Test.zip"//zipfilelist: = []string{"1", "2", "3"} ROOTP Ath: = "/home/pijing/goworkspace/gocode"//ZipPackage (Zipfilename,zipfilelist,rootpath) Zipreader (rootPath+ "/" +zip FileName)}