1.读取写入tar文件
package main import ( "archive/tar" "fmt" "os" "bufio" "io" ) func readFile(path string) string{ var content 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 string){ 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(body)), } 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/pijing/goworkspace/gocode" //tarPackage(tarFileName,tarFileList,rootPath) tarReader(rootPath+"/"+tarFileName) }
package main import ( "io" "archive/zip" "fmt" "os" "bufio" ) func readFile(path string) string{ var content 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 string){ 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"} rootPath := "/home/pijing/goworkspace/gocode" // zipPackage(zipFileName,zipFileList,rootPath) zipReader(rootPath+"/"+zipFileName) }