file.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package file
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "mime/multipart"
  6. "os"
  7. "path"
  8. )
  9. // GetSize get the file size
  10. func GetSize(f multipart.File) (int, error) {
  11. content, err := ioutil.ReadAll(f)
  12. return len(content), err
  13. }
  14. // GetExt get the file ext
  15. func GetExt(fileName string) string {
  16. return path.Ext(fileName)
  17. }
  18. // CheckNotExist check if the file exists
  19. func CheckNotExist(src string) bool {
  20. _, err := os.Stat(src)
  21. return os.IsNotExist(err)
  22. }
  23. // CheckPermission check if the file has permission
  24. func CheckPermission(src string) bool {
  25. _, err := os.Stat(src)
  26. return os.IsPermission(err)
  27. }
  28. // IsNotExistMkDir create a directory if it does not exist
  29. func IsNotExistMkDir(src string) error {
  30. if notExist := CheckNotExist(src); notExist == true {
  31. if err := MkDir(src); err != nil {
  32. return err
  33. }
  34. }
  35. return nil
  36. }
  37. // MkDir create a directory
  38. func MkDir(src string) error {
  39. err := os.MkdirAll(src, os.ModePerm)
  40. if err != nil {
  41. return err
  42. }
  43. os.Chmod(src, 0777)
  44. return nil
  45. }
  46. // RMDir remove a directory
  47. func RMDir(src string) error {
  48. err := os.RemoveAll(src)
  49. if err != nil {
  50. return err
  51. }
  52. os.Remove(src)
  53. return nil
  54. }
  55. // Open a file according to a specific mode
  56. func Open(name string, flag int, perm os.FileMode) (*os.File, error) {
  57. f, err := os.OpenFile(name, flag, perm)
  58. if err != nil {
  59. return nil, err
  60. }
  61. return f, nil
  62. }
  63. // MustOpen maximize trying to open the file
  64. func MustOpen(fileName, filePath string) (*os.File, error) {
  65. //dir, err := os.Getwd()
  66. //if err != nil {
  67. // return nil, fmt.Errorf("os.Getwd err: %v", err)
  68. //}
  69. src := filePath
  70. perm := CheckPermission(src)
  71. if perm == true {
  72. return nil, fmt.Errorf("file.CheckPermission Permission denied src: %s", src)
  73. }
  74. err := IsNotExistMkDir(src)
  75. if err != nil {
  76. return nil, fmt.Errorf("file.IsNotExistMkDir src: %s, err: %v", src, err)
  77. }
  78. f, err := Open(src+fileName, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
  79. if err != nil {
  80. return nil, fmt.Errorf("Fail to OpenFile :%v", err)
  81. }
  82. return f, nil
  83. }
  84. // 判断所给路径文件/文件夹是否存在
  85. func Exists(path string) bool {
  86. _, err := os.Stat(path) //os.Stat获取文件信息
  87. if err != nil {
  88. if os.IsExist(err) {
  89. return true
  90. }
  91. return false
  92. }
  93. return true
  94. }
  95. // 判断所给路径是否为文件夹
  96. func IsDir(path string) bool {
  97. s, err := os.Stat(path)
  98. if err != nil {
  99. return false
  100. }
  101. return s.IsDir()
  102. }
  103. // 判断所给路径是否为文件
  104. func IsFile(path string) bool {
  105. return !IsDir(path)
  106. }
  107. func CreateFile(path string) error {
  108. file, err := os.Create(path)
  109. if err != nil {
  110. return err
  111. }
  112. defer file.Close()
  113. return nil
  114. }
  115. // IsNotExistMkDir create a directory if it does not exist
  116. func IsNotExistCreateFile(src string) error {
  117. if notExist := CheckNotExist(src); notExist == true {
  118. if err := CreateFile(src); err != nil {
  119. return err
  120. }
  121. }
  122. return nil
  123. }