file.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. // Author : Eric Kim
  2. // Build Date : 23 Jul 2018 Last Update 02 Aug 2018
  3. // End-Agent for Passcon Multi OS go binding with Windows, MacOS, iOS, and Android
  4. // All rights are reserved.
  5. package etc
  6. import (
  7. "fmt"
  8. "io"
  9. "io/ioutil"
  10. "net/http"
  11. "os"
  12. )
  13. func MkdirIfNotExists(folderPath string) error {
  14. // Check if the folder already exists
  15. _, err := os.Stat(folderPath)
  16. if os.IsNotExist(err) {
  17. err := os.MkdirAll(folderPath, 0755) // 0755 is the permission mode
  18. if err != nil {
  19. return LogErr("3ffae3rfe", "Error creating folder:", err)
  20. }
  21. } else if err != nil {
  22. return LogErr("3ffae3rfe", "Unexpected Error :", err)
  23. } else {
  24. //fmt.Println("Folder already exists.")
  25. }
  26. return nil
  27. }
  28. // 코드가 엉망이라 전체 정비해야됨
  29. func StrToFile(path string, str string) error {
  30. if file, err := os.Create(path); err != nil {
  31. MyErr("FDADFADSFA", err, true)
  32. return err
  33. } else {
  34. file.Close()
  35. }
  36. var file, err3 = os.OpenFile(path, os.O_RDWR, 0644)
  37. if err3 != nil {
  38. fmt.Println(err3)
  39. return err3
  40. }
  41. defer file.Close()
  42. // Write some text line-by-line to file.
  43. _, err3 = file.WriteString(str)
  44. if err3 != nil {
  45. fmt.Println(err3)
  46. return err3
  47. }
  48. // Save file changes.
  49. err3 = file.Sync()
  50. if err3 != nil {
  51. return err3
  52. }
  53. // os.RemoveAll(jsonreceive)
  54. // err := ioutil.WriteFile(path, []byte("oaslljdfljasdfllajlsd"), 0)
  55. // if err != nil {
  56. // MyErr("WRWRQRCF", err, true)
  57. // return err
  58. // }
  59. // if file, err := os.Create(path); err != nil {
  60. // MyErr("FDADFADSFA", err, true)
  61. // return err
  62. // } else {
  63. // file.Close()
  64. // }
  65. // if file, err := os.OpenFile(path, os.O_RDWR, 0644); err != nil {
  66. // if _, err := file.WriteString(str); err != nil {
  67. // MyErr("SDFFAFFDDAF", err, true)
  68. // return err
  69. // } else {
  70. // if err := file.Sync(); err != nil {
  71. // fmt.Println(err)
  72. // }
  73. // return err
  74. // file.Close()
  75. // }
  76. // }
  77. return nil
  78. }
  79. func FileToStrSkip(filename string) (string, error) {
  80. var str string
  81. if fbytes, err := ioutil.ReadFile(filename); err == nil {
  82. str = string(fbytes)
  83. } else {
  84. return "", LogErr("ETBUIITF", "", err)
  85. }
  86. return str, nil
  87. }
  88. func FileToStr(filename string) (string, error) {
  89. var str string
  90. if fbytes, err := ioutil.ReadFile(filename); err == nil {
  91. str = string(fbytes)
  92. } else {
  93. MyErr("EPOJMDOKDSF", err, true)
  94. return "", err
  95. }
  96. return str, nil
  97. }
  98. // func (t *lo.EnvConf) FileToStruct(filename string) error {
  99. // if file, err := os.Open(filename); err == nil {
  100. // decoder := json.NewDecoder(file)
  101. // if err = decoder.Decode(t); err != nil {
  102. // MyErr("LASJLDFJ", nil, true)
  103. // return err
  104. // }
  105. // } else {
  106. // MyErr("KKOIUERJ", err, true)
  107. // return err
  108. // }
  109. // return nil
  110. // }
  111. // func fileCopy(src, dst string) error { // Copy시메모리 소모 없슴.
  112. // sFile, err := os.Open(src)
  113. // if err != nil {
  114. // return MyErr("File Open", err, false)
  115. // }
  116. // defer sFile.Close()
  117. // eFile, err := os.Create(dst)
  118. // if err != nil {
  119. // return MyErr("File Create", err, false)
  120. // }
  121. // defer eFile.Close()
  122. // _, err = io.Copy(eFile, sFile) // first var shows number of bytes
  123. // if err != nil {
  124. // return MyErr("File Copy", err, false).Error()
  125. // }
  126. // err = eFile.Sync()
  127. // if err != nil {
  128. // return MyErr("File Open", err, false)
  129. // }
  130. // return nil
  131. // }
  132. // 정비해야지 쓸수 있슴.
  133. func UriToFile(uri string, filepath string) error {
  134. // 해당내용 재정비 해야됨. //보안부분도 강화 해야 됨.
  135. // Create the file=
  136. out, err := os.Create(filepath)
  137. if err != nil {
  138. return err
  139. }
  140. defer out.Close()
  141. // Get the data
  142. resp, err := http.Get(uri)
  143. if err != nil {
  144. return err
  145. }
  146. defer resp.Body.Close()
  147. // Write the body to file
  148. _, err = io.Copy(out, resp.Body)
  149. if err != nil {
  150. return err
  151. }
  152. return nil
  153. }