當前位置: 首頁>>代碼示例>>Golang>>正文


Golang ZipFile.AddFile方法代碼示例

本文整理匯總了Golang中github.com/jhoonb/archivex.ZipFile.AddFile方法的典型用法代碼示例。如果您正苦於以下問題:Golang ZipFile.AddFile方法的具體用法?Golang ZipFile.AddFile怎麽用?Golang ZipFile.AddFile使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/jhoonb/archivex.ZipFile的用法示例。


在下文中一共展示了ZipFile.AddFile方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: main

func main() {
	//獲取可執行文件所在的絕對路徑
	//不同於用戶當前shell所在的目錄
	curDir, _ := osext.ExecutableFolder()
	fmt.Println("current directory :", curDir)

	//解析參數
	version := flag.String("v", "0.0.1", "version number")
	dir := flag.String("d", "res,src", "directory to walk")
	server := flag.String("s", "http://192.168.0.134:8080/uploadfile", "web server address to upload")

	flag.Parse()

	//檢查zip文件是否已存在
	version_name := strings.Replace(*version, ".", "_", -1)
	if exist(version_name + ".zip") {
		panic(errors.New("already exist zip file : " + version_name + ".zip"))
	}

	fmt.Println("version number :", *version)
	fmt.Println("directory to walk :", *dir)
	fmt.Println("web server address to upload :", *server)

	//md5校驗和表
	checksum_table := make(map[string]string)
	f, err := os.OpenFile(path.Join(curDir, "CHECKSUM"), os.O_CREATE|os.O_APPEND|os.O_RDWR, 0660)
	if err != nil {
		panic(err)
	}

	//zip打包表
	zip_table := make([]string, 0, 100)

	defer func() {
		json_data, err := json.Marshal(checksum_table)
		if err != nil {
			panic(err)
		}
		f.Close()
		ioutil.WriteFile(path.Join(curDir, "CHECKSUM"), json_data, 0660)
		if len(zip_table) != 0 {
			//打包
			zip := new(archivex.ZipFile)
			zip.Create(path.Join(curDir, version_name+".zip"))
			for _, v := range zip_table {
				zip.AddFile(v)
			}
			zip.Close()
			//上傳
			extraParams := map[string]string{
				"title":       "Zip File",
				"author":      "Jackie Sun",
				"description": "A zip file that generated by assets-builder",
			}
			request, err := newfileUploadRequest(*server, extraParams, "file", path.Join(curDir, version_name+".zip"))
			if err != nil {
				log.Fatal(err)
			}
			client := &http.Client{}
			resp, err := client.Do(request)
			if err != nil {
				log.Fatal(err)
			} else {
				body := &bytes.Buffer{}
				_, err := body.ReadFrom(resp.Body)
				if err != nil {
					log.Fatal(err)
				}
				resp.Body.Close()
				//fmt.Println(resp.StatusCode)
				//fmt.Println(resp.Header)
				fmt.Print(body)
			}
		} else {
			fmt.Println("nothing to zip")
		}
	}()
	//校驗和文件源數據
	checksum_data, err := ioutil.ReadAll(f)
	if len(checksum_data) != 0 {
		//fmt.Println("Unmarshal CHECKSUM")
		err = json.Unmarshal(checksum_data, &checksum_table)
		if err != nil {
			panic(err)
		}
		//fmt.Printf("%#v\n", checksum_table)
	}

	for _, v := range strings.Split(*dir, ",") {
		walkDir := path.Join(curDir, v)
		//fmt.Println("---------- Walking directory :", walkDir, "----------")
		filepath.Walk(walkDir,
			func(path string, f os.FileInfo, err error) error {
				if f == nil {
					fmt.Println("FileInfo of path:", path, "is nil")
					return err
				}
				if f.IsDir() {
					return nil
				}
//.........這裏部分代碼省略.........
開發者ID:jackiesun8,項目名稱:leafserver_protobuf,代碼行數:101,代碼來源:assets-builder.go


注:本文中的github.com/jhoonb/archivex.ZipFile.AddFile方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。