From 0bb9a4c37862e5098a596e121fb13fd12c2ca44f Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期五, 29 五月 2020 14:14:15 +0800 Subject: [PATCH] install sdk tar.gz --- extend/util/zip.go | 85 +++++++++++++++++++++++++++++++++++++++--- 1 files changed, 78 insertions(+), 7 deletions(-) diff --git a/extend/util/zip.go b/extend/util/zip.go index cb44ee3..f057359 100644 --- a/extend/util/zip.go +++ b/extend/util/zip.go @@ -5,10 +5,13 @@ "basic.com/valib/logger.git" "compress/gzip" "errors" + "fmt" "io" "io/ioutil" + "log" "os" "path" + "path/filepath" "strings" ) @@ -26,7 +29,7 @@ logger.Debug("鏂囦欢鍚嶇О鏄�", FileName) //鍒涘缓瀛樻斁鍘嬬缉鏂囦欢鐨勮矾寰�(濡傛灉鏂囦欢澶逛笉瀛樺湪) - if !dirExists(DesPathName) { + if !DirExists(DesPathName) { os.MkdirAll(DesPathName, 0777) } logger.Debug("鍒涘缓鏂囦欢") @@ -121,11 +124,11 @@ // 娓呯悊璺緞瀛楃涓� src = path.Clean(src) // 鍒ゆ柇瑕佹墦鍖呯殑鏂囦欢鎴栫洰褰曟槸鍚﹀瓨鍦� - if !exists(src) { + if !Exists(src) { return errors.New("瑕佹墦鍖呯殑鏂囦欢鎴栫洰褰曚笉瀛樺湪锛�" + src) } // 鍒ゆ柇鐩爣鏂囦欢鏄惁瀛樺湪 - if fileExists(dstTar) { + if FileExists(dstTar) { if failIfExist { // 涓嶈鐩栧凡瀛樺湪鐨勬枃浠� return errors.New("鐩爣鏂囦欢宸茬粡瀛樺湪锛�" + dstTar) } else { // 瑕嗙洊宸插瓨鍦ㄧ殑鏂囦欢 @@ -296,19 +299,87 @@ } // 鍒ゆ柇妗f鏄惁瀛樺湪 -func exists(name string) bool { +func Exists(name string) bool { _, err := os.Stat(name) return err == nil || os.IsExist(err) } // 鍒ゆ柇鏂囦欢鏄惁瀛樺湪 -func fileExists(filename string) bool { +func FileExists(filename string) bool { fi, err := os.Stat(filename) return (err == nil || os.IsExist(err)) && !fi.IsDir() } // 鍒ゆ柇鐩綍鏄惁瀛樺湪 -func dirExists(dirname string) bool { +func DirExists(dirname string) bool { fi, err := os.Stat(dirname) return (err == nil || os.IsExist(err)) && fi.IsDir() -} \ No newline at end of file +} + + +//鏂囦欢澶瑰鍒� +func CopyDir(src string, dest string) { + src_original := src + err := filepath.Walk(src, func(src string, f os.FileInfo, err error) error { + if f == nil { + return err + } + if f.IsDir() { + CopyDir(f.Name(), dest+"/"+f.Name()) + } else { + fmt.Println(src) + fmt.Println(src_original) + fmt.Println(dest) + + dest_new := strings.Replace(src, src_original, dest, -1) + fmt.Println(dest_new) + fmt.Println("CopyFile:" + src + " to " + dest_new) + CopyFile(src, dest_new) + } + return nil + }) + if err != nil { + fmt.Printf("filepath.Walk() returned %v\n", err) + } +} + +//澶ф枃浠跺鍒� +func CopyFile(srcFileName string, dstFileName string) { + //鎵撳紑婧愭枃浠� + srcFile, err := os.Open(srcFileName) + if err != nil { + log.Fatalf("婧愭枃浠惰鍙栧け璐�,鍘熷洜鏄�:%v\n", err) + } + defer func() { + err = srcFile.Close() + if err != nil { + log.Fatalf("婧愭枃浠跺叧闂け璐�,鍘熷洜鏄�:%v\n", err) + } + }() + + //鍒涘缓鐩爣鏂囦欢,绋嶅悗浼氬悜杩欎釜鐩爣鏂囦欢鍐欏叆鎷疯礉鍐呭 + distFile, err := os.Create(dstFileName) + if err != nil { + log.Fatalf("鐩爣鏂囦欢鍒涘缓澶辫触,鍘熷洜鏄�:%v\n", err) + } + defer func() { + err = distFile.Close() + if err != nil { + log.Fatalf("鐩爣鏂囦欢鍏抽棴澶辫触,鍘熷洜鏄�:%v\n", err) + } + }() + //瀹氫箟鎸囧畾闀垮害鐨勫瓧鑺傚垏鐗�,姣忔鏈�澶氳鍙栨寚瀹氶暱搴� + var tmp = make([]byte, 1024*4) + //寰幆璇诲彇骞跺啓鍏� + for { + n, err := srcFile.Read(tmp) + n, _ = distFile.Write(tmp[:n]) + if err != nil { + if err == io.EOF {//璇诲埌浜嗘枃浠舵湯灏�,骞朵笖鍐欏叆瀹屾瘯,浠诲姟瀹屾垚杩斿洖(鍏抽棴鏂囦欢鐨勬搷浣滅敱defer鏉ュ畬鎴�) + return + } else { + log.Fatalf("鎷疯礉杩囩▼涓彂鐢熼敊璇�,閿欒鍘熷洜涓�:%v\n", err) + } + } + } +} -- Gitblit v1.8.0