-
Notifications
You must be signed in to change notification settings - Fork 3
/
operation.go
77 lines (65 loc) · 1.88 KB
/
operation.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
76
77
package fileKit
import (
"github.com/gogf/gf/v2/os/gfile"
"os"
"path/filepath"
"time"
)
var (
// Chmod 修改权限
Chmod func(path string, mode os.FileMode) (err error) = gfile.Chmod
// CutAndPaste 剪贴
CutAndPaste func(src string, dst string) (err error) = gfile.Move
// Move 移动
Move func(src string, dst string) (err error) = gfile.Move
// Rename 重命名
Rename func(src string, dst string) (err error) = gfile.Move
// Remove 删除文件(或目录)
/*
PS: 如果是目录且内部有文件或目录,也会一并删除.
*/
Remove func(path string) (err error) = gfile.Remove
// Truncate 截断
/*
PS:
(1) If the file is a symbolic link, it changes the size of the link's target.
(2) If there is an error, it will be of type *PathError.
@param size 如果为0,则清空文件内容
*/
Truncate func(path string, size int) (err error) = gfile.Truncate
)
// EmptyDir 清空目录:删掉目录中的文件和子目录(递归),但该目录本身不会被删掉.
/*
@param dirPath 可以不存在(此时将返回nil)
*/
func EmptyDir(dirPath string) error {
if !Exists(dirPath) {
return nil
}
if err := AssertExistAndIsDir(dirPath); err != nil {
return err
}
// 遍历目录
dirEntries, err := os.ReadDir(dirPath)
if err != nil {
return err
}
for _, dirEntry := range dirEntries {
path := filepath.Join(dirPath, dirEntry.Name())
if err := Remove(path); err != nil {
return err
}
}
return nil
}
// SetModificationTime 修改文件(或目录)的修改时间
/*
PS:
(1) 也会同时修改文件(或目录)的访问时间;
(2) 修改目录的修改时间,将不会影响该目录下的文件或目录;
(3) 传参t可以晚于当前时间.
@param path 传参""将返回error(chtimes : The system cannot find the path specified.)
*/
func SetModificationTime(path string, t time.Time) error {
return os.Chtimes(path, t, t)
}