file.go 3.7 KB

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