/
file.go
75 lines (63 loc) · 1.48 KB
/
file.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package utils
import (
"io/ioutil"
"os"
"path/filepath"
"strings"
)
// CheckPathExists 检查文件目录是否存在
// 存在返回true,否则返回false
func CheckPathExists(path string) bool {
_, err := os.Stat(path)
if err == nil {
return true
}
return !os.IsNotExist(err)
}
// CreatePath 递归创建文件
// error==nil,创建成功,否则创建失败
// 内部调用 MkdirAll
func CreatePath(path string) error {
return os.MkdirAll(path, os.ModePerm)
}
// CheckAndCreate 检查文件或者目录是否存在,不存在则创建
// error==nil,创建成功,否则创建失败
func CheckAndCreate(path string) error {
if !CheckPathExists(path) {
return CreatePath(path)
}
return nil
}
//GetDirFromPath 从path获取当前文件所在目录
// 返回目录路径
func GetDirFromPath(path string) string {
return filepath.Dir(path)
}
//GetDirFromPath 从path获取当前文件名字
// 返回文件名字
func GetFileNameFromPath(path string) string {
_, f := filepath.Split(path)
return f
}
func WalkFiles(fileDir string, suffix ...string) ([]string, error) {
rd, err := ioutil.ReadDir(fileDir)
if err != nil {
return nil, err
}
var out []string
for _, fi := range rd {
if !fi.IsDir() {
if len(suffix) > 0 {
for _, v := range suffix {
if strings.HasSuffix(fi.Name(), v) {
out = append(out, filepath.Join(fileDir, fi.Name()))
break
}
}
} else {
out = append(out, filepath.Join(fileDir, fi.Name()))
}
}
}
return out, nil
}