// Author : Eric Kim // Build Date : 23 Jul 2018 Last Update 02 Aug 2018 // End-Agent for Passcon Multi OS go binding with Windows, MacOS, iOS, and Android // All rights are reserved. package etc import ( "fmt" "io" "io/ioutil" "net/http" "os" ) func MkdirIfNotExists(folderPath string) error { // Check if the folder already exists _, err := os.Stat(folderPath) if os.IsNotExist(err) { err := os.MkdirAll(folderPath, 0755) // 0755 is the permission mode if err != nil { return LogErr("3ffae3rfe", "Error creating folder:", err) } } else if err != nil { return LogErr("3ffae3rfe", "Unexpected Error :", err) } else { //fmt.Println("Folder already exists.") } return nil } // 코드가 엉망이라 전체 정비해야됨 func StrToFile(path string, str string) error { if file, err := os.Create(path); err != nil { MyErr("FDADFADSFA", err, true) return err } else { file.Close() } var file, err3 = os.OpenFile(path, os.O_RDWR, 0644) if err3 != nil { fmt.Println(err3) return err3 } defer file.Close() // Write some text line-by-line to file. _, err3 = file.WriteString(str) if err3 != nil { fmt.Println(err3) return err3 } // Save file changes. err3 = file.Sync() if err3 != nil { return err3 } // os.RemoveAll(jsonreceive) // err := ioutil.WriteFile(path, []byte("oaslljdfljasdfllajlsd"), 0) // if err != nil { // MyErr("WRWRQRCF", err, true) // return err // } // if file, err := os.Create(path); err != nil { // MyErr("FDADFADSFA", err, true) // return err // } else { // file.Close() // } // if file, err := os.OpenFile(path, os.O_RDWR, 0644); err != nil { // if _, err := file.WriteString(str); err != nil { // MyErr("SDFFAFFDDAF", err, true) // return err // } else { // if err := file.Sync(); err != nil { // fmt.Println(err) // } // return err // file.Close() // } // } return nil } func FileToStrSkip(filename string) (string, error) { var str string if fbytes, err := ioutil.ReadFile(filename); err == nil { str = string(fbytes) } else { return "", LogErr("ETBUIITF", "", err) } return str, nil } func FileToStr(filename string) (string, error) { var str string if fbytes, err := ioutil.ReadFile(filename); err == nil { str = string(fbytes) } else { MyErr("EPOJMDOKDSF", err, true) return "", err } return str, nil } // func (t *lo.EnvConf) FileToStruct(filename string) error { // if file, err := os.Open(filename); err == nil { // decoder := json.NewDecoder(file) // if err = decoder.Decode(t); err != nil { // MyErr("LASJLDFJ", nil, true) // return err // } // } else { // MyErr("KKOIUERJ", err, true) // return err // } // return nil // } // func fileCopy(src, dst string) error { // Copy시메모리 소모 없슴. // sFile, err := os.Open(src) // if err != nil { // return MyErr("File Open", err, false) // } // defer sFile.Close() // eFile, err := os.Create(dst) // if err != nil { // return MyErr("File Create", err, false) // } // defer eFile.Close() // _, err = io.Copy(eFile, sFile) // first var shows number of bytes // if err != nil { // return MyErr("File Copy", err, false).Error() // } // err = eFile.Sync() // if err != nil { // return MyErr("File Open", err, false) // } // return nil // } // 정비해야지 쓸수 있슴. func UriToFile(uri string, filepath string) error { // 해당내용 재정비 해야됨. //보안부분도 강화 해야 됨. // Create the file= out, err := os.Create(filepath) if err != nil { return err } defer out.Close() // Get the data resp, err := http.Get(uri) if err != nil { return err } defer resp.Body.Close() // Write the body to file _, err = io.Copy(out, resp.Body) if err != nil { return err } return nil }